1. 问题
第八行这里if(j>=i)是为什么啊?
按照他这个循环j永远不会大于或等于i啊?
int fun(int lim, int aa[MAX])
{
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[k++] = i;
}
return k;
}
2. 回答
执行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的情况。