正文

分解素因子2007-04-05 12:30:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiaoxiaofeng/24615.html

分享到:

分解素因子 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;}

阅读(128) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册