C语言判断素数问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 02:13:37
以下这个程序是判断是否素数的问题,这段程序是我抄书上的例子,其中一句话我不理解,原话如下:“其中如果m不能被2~k之间的任意整数整除,则在完成最后一次循环后,i还要加1,因此i=k+1,然后才终止循环。”这句话中为什么当循环结束后i还要加1啊?我不理解,是因为i++的原因吗?不是for循环只进行到i吗?例如for(i=1;i<100;i++)这个循环是究竟进行到i啊?还是i++啊?是因为结束循环还要自增1吗?谁能帮我回到一下啊?谢谢
#include "stdio.h"
void main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k)printf("%d is a prime number\n",m);
else printf("%d is not a prime number\n",m);
}

c 的for 循环

因为一个循环过程,分四步

1 初始化:给循环变量和其它变量赋初值;
2 循环体:要重复执行的操作;
3 修正部分:修改循环变量的值,为循环的下一次重复做准备;
4 检查部分:测试循环条件,判断循环是否还要重复。

所以
for(i=1;i<100;i++)
循环结束以后 i 的值是 100

例如for(i=1;i<100;i++)这个循环结束后,i的值为100,看来你对for循环不懂,for(i=1;i<100;i++)翻译为汇编的代码如下:

i=1;
loop:
if (i<100){
...循环体语句...
}else goto loop_end;
i=i+1;
goto loop
loop_end:
所以,循环体直接结束后,循环变量i的值是第一个不满足要求的值。