C语言作业:使用子函数,判断一个数是不是素数,如果不是,输出其素数因子。

完整题目:
从键盘任意输入一个正整数,若是素数,打印“没有因子,是素数”的提示信息;若不是素数,则由小到大打印其所有的素数因子,如输入120,输出应该是120 = 2*2*2*3*5,或者90=2*3*3*5

题目要求必须使用到“子函数”来完成。

参考代码如下:
#include "stdio.h"
void decompose(int n)
{
int i,fac=1;
while(n>1){
for(i=2;i<=n;i++)
if(n%i==0){
fac=i;
break;
}
if(n!=fac)
printf("%d*",fac);
else
printf("%d",fac);
n/=fac;
}
}
int isPrime(int x)
{
int i;
if(x<=1)
return 0;
for(i=2;i<x;++i)
if(x%i==0) return 0;
return 1;
}
int main( )
{
int n;
scanf("%d",&n);
if(n<=0){
printf("error");
return 0;
}
if(isPrime(n))
printf("没有因子,是素数");
else{
printf("%d=",n);
decompose(n);
}
}追答

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-17
主函数
{
输入正整数;
调用子函数;
}
子函数
{
判断素数
因子存入数组
打印数组
}
第2个回答  2018-12-17
#include #include int is_prime(int n){ int i; for(i = 2; i <= sqrt(n); i ++) if(n%i == 0) return 0; return 1;}int main(){ int i; scanf("%d",&i); if(is_prime(i))printf("%d是素数\n", i); else printf("%d不是素数\n",i); return 0;}