NYOJ-509-因子和阶乘-2013年08月20日16:57:18

来源:互联网 发布:阿里云 404 编辑:程序博客网 时间:2024/06/09 20:25

因子和阶乘

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
描述
给你一个正整数n,把n!=1x2x3x.....xn分解成素因子相乘的形式,并从小到大输出每个素因子的指数,但要保证最后输出的素因子个数不为0。例如825应表示为0,1,2,0,1表示分别有0,1,2,0,1个2,3,5,7,11。
输入
第一行有一个整数n(0<n<10000),表示有n组测试数据;
接下来n行每行有一个整数 m(1<m<10000)
输出
从小到大输出m分解成素因子相乘后各个素因子对应的指数
样例输入
2553
样例输出
3 1 149 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;}        



原创粉丝点击