给你一个正整数n,把n!=1x2x3x.....xn分解成素因子相乘的形式,并从小到大输出每个素因子的指数,但要保证最后输出的素因子个数不为0。例如825应表示为0,1,2,0,1表示分别有0,1,2,0,1个2,3,5,7,11。
输入
第一行有一个整数n(0测试数据;< p> 接下来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;
}