c语言关于求素数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 09:22:31
#include<stdio.h>
void main()
{
int m,i;
printf("please input a number:\n");
scanf("%d",&m);
for(i=2;i<=m;i++)
if(m%i==0) break;
if(i>m)
printf("This number is sush");
else printf("This number isn't sush");
getch();
}
为什么不管输入什么值,都是执行else语句啊,但是for语句里面改成i<=(m-1)或m/2或sqrt(m),就可以了呢?
三楼的回答正确,可以告诉我为什么必须是i<m,而不可以是i<=m呢?

i=m时,执行语句 if(m%i==0) break; 退出for循环,此时i=m
所以if(i>m) 语句条件不成立,始终执行else后的语句。
改为:if(i==m)

for(i=2;i<m;i++)
if(m%i==0) break;
if(i==m)
printf("This number is sush");
else printf("This number isn't sush");

你的语句太混乱了
而且最重要的是你FOR循环的范围是多少????