为什么第二个for循环的范围是<i-1?

img


如图

有又不是一定的,看你自己怎么写了。
k<i-1没必要,可以写成k<i/2+1或者k<=sqrt(i)
循环终止条件,在于找到有效的临界值。
判断素数,k<=sqrt(i)这个条件是最有效的。当k>sqrt(i)后,一定找不到能整除的数。

k<i-1完全没必要。不想麻烦的话,写个k<i就行。想代码循环的次数更少,可以两种写法,
一是k*k<=i,比如计算16是不是素数,你算到4就可以了。
或者先定义一个变量等于sqrt(i),然后k<=这个变量也行,循环次数一样。不建议把 sqrt(i)写到循环语句中,这样每次都会执行sqrt(i),要消耗时间的。