分解素因子 Time Limit:1s Memory limit:32M Accepted Submit:227 Total Submit:439 假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个程序,将x分解为若干个素数的乘积。 输入输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数,后面紧接着k行,每行对应一个测试例,包含一个正整数x。 输出每个测试例对应一行输出,输出x的素数乘积表示式,式中的素数从小到大排列,两个素数之间用“*”表示乘法。 输入样例2 11 9828 输出样例11 2*2*3*3*3*7*13 Original: FJNU Preliminary 2005 #include<iostream>#include<cmath>using namespace std; bool is_prime(int test){ int i; for(i=2;i<test;i++) if(test%i==0)return false; return true;} int main(){ int n,i,j,k; int *data,divide[100]; while(scanf("%d",&n)!=EOF){ data=new int[n]; for(i=0;i<n;i++)cin>>data[i]; for(i=0;i<n;i++) { if(is_prime(data[i])){cout<<data[i]<<endl;continue;} for(j=2,k=0;j<=data[i];) { if(is_prime(data[i])){divide[k]=data[i];break;} if(data[i]%j==0&&is_prime(j)) { data[i]/=j; divide[k]=j; k++; continue; } j++; } for(j=0;j<=k;j++) { if(j<k)cout<<divide[j]<<"*"; else cout<<divide[j]<<endl; } } delete []data; } return 0;}

评论