因子和阶乘



1000 ms  |  内存限制: 65535



2




第一行有一个整数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<math.h>
# include<string.h>

int is_prime(int n)
{
int i;
for(i=2; i<=sqrt(n); i++)
{
if(n%i==0)
return 0;
}
return 1;
}

int prime[10010], count = 0;

int main()
{
int N,m,n,p[10010],i,j,maxp;
for(i=2;i<10010;i++)
{
if(is_prime(i))
prime[count++] = i;
}
scanf("%d",&N);
while(N--)
{
scanf("%d",&n);
// printf("%d! =",n);
memset(p,0,sizeof(p));
maxp = 0;
for(i=1; 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(i=0; i<maxp; i++)
{
printf("%d ",p[i]);
}
printf("%d\n",p[i]);
}
return 0;
}