本文主要是介绍NYOJ-509-因子和阶乘-2013年08月20日16:57:18,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
因子和阶乘
时间限制: 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分解成素因子相乘后各个素因子对应的指数 样例输入
-
2 5 53
样例输出 -
3 1 1 49 23 12 8 4 4 3 2 2 1 1 1 1 1 1 1
- 第一行有一个整数n(0<n<10000),表示有n组测试数据;
# 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;
}
这篇关于NYOJ-509-因子和阶乘-2013年08月20日16:57:18的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!