NYOJ-509-因子和阶乘-2013年08月20日16:57:18
原创
©著作权归作者所有:来自51CTO博客作者ITCharge的原创作品,请联系作者获取转载授权,否则将追究法律责任
因子和阶乘
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;
}