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

Java素数查找程序问题:输出含非素数+需添加素数计数器

解决Java素数程序的两个问题:错误输出非素数与添加素数计数器

问题1:输出混杂非素数的原因及修正

你的程序会输出非素数,核心问题是内层循环的起始值错误。当前内层循环从start(即5)开始检查因数,但判断素数需要验证目标数是否能被2到其平方根之间的任意整数整除——跳过2、3、4这些小因数,会导致像6、9这类能被小数字整除的数被误判为素数。

关键修正点:

  • 内层循环从2开始,覆盖所有可能的因数
  • 优化循环终止条件到Math.sqrt(i):若一个数存在大于其平方根的因数,必然对应一个小于平方根的因数,这样能减少循环次数,提升效率
  • 用boolean类型标记是否为素数,比int flag更直观

问题2:添加素数计数器

只需初始化一个计数变量,每次确认找到素数时自增,最后输出总数即可。


修正后的完整代码

package com.mycompany.test;

public class Test {

    public static void main(String[] args) {
        int start = 5;
        int end = 98;
        int primeCount = 0; // 素数计数器

        for (int i = start; i <= end; i++) {
            boolean isPrime = true;
            // 检查2到i的平方根之间的所有整数
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    isPrime = false;
                    break; // 找到因数后直接跳出循环,无需继续检查
                }
            }
            if (isPrime) {
                System.out.println(i);
                primeCount++; // 找到素数时计数+1
            }
        }
        System.out.println("找到的素数总数:" + primeCount);
    }
}

运行该程序后,会正确输出5到98之间的所有素数,同时在最后打印出找到的素数总数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:52:03