- 輸入
-
第一行有一個整數n(0<n<10000),表示有n組測試資料;
接下來n行每行有一個整數 m(1<m<10000)
輸出 - 從小到大輸出m分解成素因子相乘後各個素因子對應的指數 樣例輸入
-
2 5 53
樣例輸出 -
3 1 1 49 23 12 8 4 4 3 2 2 1 1 1 1 1 1 1
#include <stdio.h> #include <string.h> #include <math.h> #include <ctype.h> #include <stdlib.h> 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<i;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<i;n++) printf("%d ",prime[cost[n]]); printf("\n"); memset(prime,0,sizeof(prime)); } return 0; }