给你一个正整数n,把n!=1x2x3x.....xn分解成素因子相乘的形式,并从小到大输出每个素因子的指数,但要保证最后输出的素因子个数不为0。例如825应表示为0,1,2,0,1表示分别有0,1,2,0,1个2,3,5,7,11。
输入
第一行有一个整数n(0 接下来n行每行有一个整数 m(1 输出 从小到大输出m分解成素因子相乘后各个素因子对应的指数 样例输入 2 5 53 样例输出 3 1 1 49 23 12 8 4 4 3 2 2 1 1 1 1 1 1 1#include #include #include #include #include int main() { int prime[109]={1,1},cost[25],i,j,n=0,m,t; for(i=2;i<=10;i++) for(j=i;j*i<=100;j++) prime[j*i]=1; for(i=2;i<=100;i++) if(prime[i]==0) cost[n++]=i; memset(prime,0,sizeof(prime)); while(scanf("%d",&m)==1) { for(i=0;i<25;i++) if(cost[i]>m) break; for(n=2;n<=m;n++) { t=n; //printf("%d\n",n); for(j=0;j { n=t; // printf("%d %d\n",n,cost[j]); if(n/cost[j]==0) break; while(n%cost[j]==0) { n=n/cost[j]; prime[cost[j]]++; } } n=t; } for(n=0;n printf("%d ",prime[cost[n]]); printf("\n"); memset(prime,0,sizeof(prime)); } return 0; }