第八行这里if(j>=i)是为什么啊,
int fun(int lim, int aa){
int i, j, k = 0;
for (i = 2; i <= lim; i++) //求出小于或等于lim的素数
{
for (j = 2; j < i; j++)
if (i % j == 0)break;
if (j >= i)
aa = i;
}
return k;
} 按照他这个循环j永远不会大于或等于i啊
j >= 2 说明上面的循环过程中的判断条件 i % j == 0 没有一次是成立的,当循环结束的时候 j 是等于 i 的,如果中间有一次 i % j == 0 成立的话回循环提前结束,j 一定是小于 i,也就是说这个 i 一定不是素数,这个判断条件也可以直接写成j == i。 本帖最后由 番杰 于 2021-12-24 17:05 编辑
执行for (j = 2; j < i; j++)的时候;
不满足这个循环时,不就是j>=i的情况吗,
举个例子:i = 3 ;
循环开始时:
1)j = 2,小于i(3),进入for循环,
进行if (i % j == 0);3%2 =2,不等于0,不满足条件,无法执行break;
所以继续循环:执行j++ ;此时j = 3;
2)j = 3 ,不小于i(3),退出for循环;
执行if (j >= i);此时:j = 3,i = 3 ;
满足条件;不存在你说的那个情况。
另外,这个数组aa就是用来存放比i小的素数的。
再另外,当i不是素数时,j就不可能出现j>=i的情况。
页:
[1]