You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算机专业新生咨询Java checkPrime素数判断方法运行逻辑

checkPrime() 方法的素数判断工作原理

整个方法的核心逻辑完全贴合素数的数学定义:大于1的自然数,除了1和它本身外不存在其他正因数,逐段拆解如下:

  • 循环起点设置为j=2:1是所有整数的公共因数,检测1的整除性没有任何意义,因此从最小的、可能成为其他数因数的整数2开始遍历。
  • 循环终止条件设置为j < num:num本身一定是自己的因数,如果遍历到j=num的位置,取余结果必然为0,会把所有数都误判为非素数,因此循环只需要覆盖所有比num小、比1大的整数范围即可。
  • 核心判定逻辑为取余运算:每次循环计算num % j,也就是num除以j后的余数。如果余数为0,说明j是num的正因数,num已经不符合素数的定义,这时候不需要继续遍历剩余的数字,直接返回false结束方法。
  • 循环全量走完仍未触发返回false的分支,说明2到num-1的所有整数都不能整除num,num满足素数的判定要求,直接返回true。

拿实际运行的场景举两个直观的例子:

  1. 当待检测数num=7时:循环依次计算7%2=1、7%3=1、7%4=3、7%5=2、7%6=1,全程没有出现余数为0的情况,循环走完直接返回true,判定为素数。
  2. 当待检测数num=9时:循环先算9%2=1,继续执行到j=3时,9%3=0,直接触发返回false的分支,不需要再遍历后续j=4到j=8的数字,直接判定为非素数。

另外补充对应你代码里的特殊值处理:当待检测数是1的时候,由于j从2开始、j<1的循环条件根本不成立,循环会直接跳走返回true,但1本身不符合素数的定义,所以你在isPrime方法里加了i != 1的判断,把这个特殊的误判场景排除掉了,这也是整套代码可以正常输出正确素数列表的原因。


内容的提问来源于stack exchange,提问作者DH615

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 21:06:06