不明白为什么i>k,就是素数

img


看了这个代码后,我没有明白为什么i>k时,就是素数,求解答,好的答案我会积极采纳的

因为循环时设计的i<=k,当i>k的时候就退出循环,如果最后i>k,那说明对于所有的i,m%i都不等于0,也就是说2-k没有能被m整除的,那么m就是素数了


for(i=2;i<=k;i++)  //假设 k=10,i=2 开始循环,当if(m%i==0)这条件不满足时,i++ 一直循环
     if(m%i==0) break; //当 i = 10,i<=k 这条件仍然满足,所以i++再执行一次,i=11, i <= k 条件不满足了。
 if(i>k) printf(".......");//这里的条件就满足了,i > k : 11 > 10
                     //素数的判断条件是除 1 和 其自身 以外,没有其它因子的数,上面的代码就是判断
                     //i2 开始到 k 之间如果有任何一个因子,i 必定小于 k. 至于k为啥选此数的开方,
                     //这里纯粹是数学的知识,用在这里是为了提高效率,减少循环的次数。