c语言 求素数

来源:百度知道 编辑:UC知道 时间:2024/06/22 21:41:31
#include <stdio.h>
#include <math.h>
int main( )
{

int flag,n;
int prime(int m);

scanf("%d", &n);
flag=prime(n);
if(flag) printf("YES\n");
else printf("NO\n");

}
int prime(int m)
{int i;
if(m=1) return 0;
for(i=2;i<=m/2;i++)
if(m%i==0) break;
return 0;
if(i>m/2)
return 1;

}

不管我输的是什么
都输出no
怎么搞啊

#include <stdio.h>
#include <math.h>
int main( )
{

int flag,n;
int prime(int m);
scanf("%d", &n);
flag=prime(n);
if(flag) printf("YES\n");
else printf("NO\n");

}
int prime(int m)
{int i;
if(m==1) //改正之处,你那样做是又给M赋值为1
return 0;
for(i=2;i<=m/2;i++)
if(m%i==0) break;

/*改正的地方,你好好看看吧,你那样的return在for语句后,每次都会执行if语句永远也不会执行的.*/
if(i>m/2)
return 1;
return 0;

}

素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。例如,15=3*5,所以15不是素数;又如,12=6*2=4*3,所以12也不是素数。另一方面,13除了等于13*1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。
你再看看你的表达式有没有问题。

for(i=2;i<=m/2;i++)
if(m%i==0) break;
return 0;

无论你的for循环如何结束都返回0

下面的代码不会被执行到
改成
for(i=2;i<=m/2;i++) if(m%i==0) return 0;
return 1;

感觉for(i=2;i<=m/2;i++)
后面应该加个{},不然的话是顺序执行的
错误在
int prime(int m