若所给定的数 j 不是素数,那么存在不等于 1 的两个约数x1 和 x2,并且满⾜x1 >= sqrt(j),x2 <= sqrt(j)。因此可直接搜索范围从2到sqrt(j)就可以, 使得搜索范围减少。代码里根据这个数学原理,从 i = 2 开始寻找直到 i = sqrt(j) ,如果 j 不是素数,循环结束后 j > k 必定成立,输出 j 是素数的判断,反之,循环时找到 j 的因子,循环被break; 提前结束,此时必定 i <= k , j 就不是素数了。
从2到它的平方根,都没有一个能被其整除,就是素数。
这是从2到本身的优化,除了1和本身,没有任何一个数能被其整除,就是素数。
我的这篇文章可能对你有帮助,遍历大于2 小于 j 的所有数,如果有一个数可以整除的话,就退出for循环,退出了后 i 就会小于或者等于 k;所以如果i > k 的话就代表没有找到可以整除他的数,没有找到就代表他是素数咯;
https://blog.csdn.net/apple_53792700/article/details/127575792?spm=1001.2014.3001.5502