因子和阶乘

来源:互联网 发布:淄博seo外包公司 编辑:程序博客网 时间:2024/05/17 04:24
/*算出n阶乘是由多少个质数相乘得到的!其中,n<100; 例如,5!=2^3*3*5,则输出3,1,1 输出直到最大素数,后面的不输出 */#include <stdio.h>#include <string.h>#define MAXN 10000int prime[MAXN];//素数表 int count=0;int is_prime(int n){bool u[MAXN];memset(u,true,sizeof(u));memset(prime,0,sizeof(prime));int i,su[MAXN],num=1;int j;memset(su,0,sizeof(su));for(i=2;i<=n;i++){if(u[i])su[num++]=i;for(j=1;j<num;j++){if(su[j]*i>n)break;u[su[j]*i]=false;if(i%su[j]==0)break;}}for(i=2,count=0;i<=n;i++){if(u[i])prime[count++]=i;} }int main(){int i,maxp;int n,m;int p[MAXN];is_prime(100);int j;while(scanf("%d",&n)==1){memset(p,0,sizeof(p));maxp=0;if(n<2&&n>=0){printf("%d!= 1\n",n);continue;}printf("%d!=",n);for(i=2;i<=n;i++){m=i;for(j=0;j<count;j++){while(m%prime[j]==0){m/=prime[j];p[j]++;if(j>maxp)maxp=j;}}}for(m=0;m<=maxp;m++)printf(" %d",p[m]);printf("\n");}return 0;}

0 0
原创粉丝点击