C语言for循环判断素数

#include "stdio.h"
main()
{int i,x;
printf("请输入一个正整数");
scanf("%d",&x);
for (i=2;i<=x-1;i++)
if (x%i==0)break;
if(i==x)printf("%d是素数\n",x);
else
printf("%d不是素数\n",x);
}
我不明白为什么要i<=x-1,i<=x运行结果也都对呀??

质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数。1和0既非素数也非合数。
假设循环为for (i=2;i<=x;i++)如果输入x=7,i=2,2<7,然后i+1为3,之后一直执行到i=7,
7<=7可以执行,i7%7==0直接执行break退出循环,执行下一句,此时i不再加一(已退出循环),所以i<=x这样也是可以的。当然如果是for (i=2;i<=x-1;i++)也是可以的,这个就不解释了。
之所以用i <=x-1,因为这是一般人的想法,比较通俗易懂。i<=x这个就不好想了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-15
i<=x-1
i<=x
i<=x+1
i<=x+2
i<=x+3
i<=x+100
i<x
i<x+1
以上都对,只要能让i执行到x-1就行了,

如果是素数,后面i++会让i==x的

个人认为 i<x最简单,执行的运算和循环次数最少,
其余的判断的时候还会做一下加减,
了解汇编就能掌握执行了多少条命令
第2个回答  2010-11-15
i<=x如果后面没有if(i==x)肯定错呀,一个数肯定能被本身整除,那样每个数都不是素数了。
素数的概念是不能被1和本身整除且大于2的数。
第3个回答  2010-11-15
i<x
是对的
i<=x是不对的
因为i<x中i不能等于x,
而i<=x的i可以等于x
x%x一定等于0
第4个回答  2010-11-15
x-1可以少循环一次嘛 反正后面做了i++了