Description
假设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
Source:#include < iostream.h >
#include < math.h >
int N;
int a[ 10000 ];
int k;
int isp( int n)
... {
if(n==1) return 0;
for(int i=2;i<=sqrt(n);i++)
if(n%i==0) return 0;
return 1;
}
void fenjie( int n)
... {
int m=n;
int i;
for(i=2;i<=m;i++)
...{
if(m==0) break;
if(!isp(i)) continue;
else
...{
while(m%i==0)
...{
a[++k]=i;
m=m/i;
}
}
}
for(i=1;i<k;i++)
cout<<a[i]<<"*";
cout<<a[k]<<endl;
}
int main()
... {
cin>>N;
int n;
for(int i=1;i<=N;i++)
...{
k=0;
cin>>n;
if(isp(n)) cout<<n<<endl;
else
...{
fenjie(n);
}
}
return 0;
}
![]()