【唯一分解定理】:https://www.cnblogs.com/mjtcn/p/6743624.html
假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个程序,将x分解为若干个素数的乘积。
Input
输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数,后面紧接着k行,每行对应一个测试例,包含一个正整数x。
Output
每个测试例对应一行输出,输出x的素数乘积表示式,式中的素数从小到大排列,两个素数之间用“*”表示乘法。
Sample Input
2 11 9828
Sample Output
11 2*2*3*3*3*7*13
【代码】:
#include <iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<streambuf> #include<cmath> using namespace std; #define ll long long #define oo 10000000 int a[10000],k,n,t; int main() { scanf("%d",&t); while(t--) { scanf("%d",&n); k=0; for(int i=2;i<=n;i++) { while(n%i==0) { a[k++]=i; n/=i; } } for(int i=0;i<k;i++) { printf(i==0?"%d":"*%d",a[i]); } printf(" "); } }