C语言 请帮忙分析一下这个程序。

来源:百度知道 编辑:UC知道 时间:2024/06/05 02:51:39
编写函数,求数n所有质因子(所有为素数的因子)并输出,n由主函数输入。
#include<stdio.h>
int prime(int n)
{int i;
for(i=2;i<n;i++)
if(n%i==0) return 0;
return 1;
}
void main()
{
int m,j;
scanf("%d",&m);
for(j=2;j<m;j++)
if(m%j==0 && prime(j))
printf("%4d\n",j);
}
问题是,假如我要求证6符不符合题目要求,在主函数那里,得出2、3.在调用函数那里,2却没办法符合for里面的条件,但实际上2是素数啊~

prime函数可以这样简单改一下:
int prime(int n)
{
if(n==2)
return 1;
else
{
int i;
for(i=2;i<n;i++)
{
if(n%i==0) return 0;
else
return 1;
}
}
}

#include<stdio.h>
int prime(int n)//函数功能判断是否素数
{int i;
for(i=2;i<n;i++)
if(n%i==0) return 0;
return 1;
}
void main()
{
int m,j;
scanf("%d",&m);//键入
for(j=2;j<m;j++)//循环判断
if(m%j==0 && prime(j))//检索条件 即是这个数的因子 又要是素数
printf("%4d\n",j);
}