想问一下为什么要i>n-1成立就是素数,不成立就不是素数呢

img


想问一下后面的if语句咋判断的,为什么要那样判断呢,凑字数123456789

因为循环中有break。如果是break跳出循环的情况,一定i<=n-1。为何break?因为出现整除关系,说明这个数不是素数,所以循环结束后只需要判断i和n-1的关系,就知道这个数是不是素数了

如果循环完了,都没有一个数能整除的,那不就是素数吗
如果遇到能整除的数了,就会break,那i就肯定不能大于n-1了呀

素数的定义就是:只能被1和自己整除
那么如果从2到n-1都无法整除满足定义

书上同时提示你可以用开方的,因为 整除说明就是 a*b=c。当a=b时 就已经覆盖判定条件了,所以a的取值范围可以是2到 sqrt(c)

另外补充一下,最后那个判定其实是和这个代码匹配的场景写法,源代码写的是 for (int i=2 ;i<n-1;i++)
当没有提前结束,那么退出循环后 i=n-1+1,因为那个i++在最后一次循环也生效