题目描述:输入正整数n(2<=n<=100),把阶乘n!=1x2x3x...xn分解成素因子相乘的形式,从小到大输出各个素数(2、3/5.....)的指数。你的程序应忽略比最大素因子更大的素数(否则末尾会有无穷对个0)。
样例输入:
5
53
样例输出:
5!=3 1 1
53!=49 23 12 8 4 4 3 2 2 1 1 1 1 1 1 1
代码如下:
#include<stdio.h>
#include<string.h>
int prime[100],count=0;//用于维持一张素数表
int is_prime(int n){
for(int i=2;i<n;i++){
if(n%i==0) return 0;}//不是素数
return 1;
}
int main(){//注意算法竞赛题必须有返回值
int n,p[100];//用于记录因子的个数
for(int i=2;i<=100;i++)
if(is_prime(i)) prime[count++]=i;//构造一张素数表
while(scanf("%d",&n)==1){//注意循环输入的条件

该博客探讨如何将正整数n的阶乘分解为素因子相乘的形式,详细介绍了算法实现过程,包括如何找出素数及其在分解后的指数。样例输入5和53展示了程序输出结果,显示了不同素数的指数。
最低0.47元/天 解锁文章
1452

被折叠的 条评论
为什么被折叠?



