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

如何将Java素数判断方法中的for循环改写为while循环?

素数判断for改while循环错误分析

你的改写代码存在3处核心逻辑错误,和原for循环执行逻辑不一致:

  • 循环内部写了break语句,导致循环最多执行1次就强制退出,完全没有完成原for逻辑中遍历所有满足i² <=n的i值的要求
  • 把i++放在了整除判断逻辑之前,第一次做整除判断时i已经变成3,漏掉了原逻辑中i=2的判断步骤
  • 把n%i ==0的整除判断写在了while循环外部,原逻辑是每遍历一个i值都要做一次整除校验,只要有一个i能整除n就直接返回false

正确改写代码

static boolean isPrime(int n)
{
    int i = 2;
    while (Math.pow(i, 2) <= n)
    {
        if(n % i == 0)
            return false;
        i++;
    }
    return true;
}

额外优化建议

你可以把循环条件里的Math.pow(i, 2) <= n替换为i * i <= n,既可以避免浮点运算带来的精度问题,也能提升代码运行效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:24:00