实在搞不明白为啥
//用if(i>=m) return 1;是错误的 ,
(代入具体数字跑了好几遍都没问题)
int prime(int m)
{
int i;
if(m==0) return 0;
if(m==1) return 0;//考虑0和1的情况
for(i=2;i<m;i++)//没有等号
if (m%i==0) break;
if(i<m) return 0;//用if(i>=m) return 1;是错误的
else return 1;
}
不可能啊,你把修改之后的完整代码和运行结果发出来
你这段代码是没有错的,可以那样写,不然就是其他代码错误
我这里把你这份改了一下,顺便优化了下,你看看,重新改了下
int prime(int m)
{
if(m==0||m==1) return 0;
for(int i=2;i<=sqrt(m);i++){//一个数因数除了本身,否则再开这个值开根号往后的位置都不可能找到它的因数
if (m%i==0) return 0;//中间出现可以整除的就是说明它不是质数
}
return 1;//到这里就说明它没给整除过是个质数
}