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

Java实现指定数字后N个质数输出无结果问题排查求助

Java实现指定数字后N个质数无输出问题排查与修复

常见问题排查点

  1. isPrime方法逻辑错误:比如未处理小于2的数、循环终止条件错误(比如用i <= num而非i <= Math.sqrt(num),或漏了偶数快速判断),导致无法正确识别质数。
  2. 质数搜索逻辑问题:起始搜索数字错误(比如从输入数字本身开始而非下一个数)、计数逻辑错误(找到质数后未正确累加计数)。
  3. 输入处理问题:未正确读取用户输入的两个数值,导致后续逻辑未执行。
  4. 输出逻辑缺失:找到质数后未进行拼接或打印操作。

修复后的完整代码示例

import java.util.Scanner;

public class NextPrimes {
    // 正确的质数判断方法
    public static boolean isPrime(int num) {
        if (num <= 1) {
            return false;
        }
        // 快速判断偶数
        if (num == 2) {
            return true;
        }
        if (num % 2 == 0) {
            return false;
        }
        // 只遍历奇数,到平方根即可
        for (int i = 3; i <= Math.sqrt(num); i += 2) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 读取输入数字
        System.out.print("请输入起始数字: ");
        int startNum = scanner.nextInt();
        // 读取需要输出的质数数量
        System.out.print("请输入需要输出的质数数量: ");
        int count = scanner.nextInt();
        
        StringBuilder result = new StringBuilder();
        int found = 0;
        int current = startNum + 1; // 从起始数字的下一个数开始搜索
        
        while (found < count) {
            if (isPrime(current)) {
                if (found > 0) {
                    result.append(",");
                }
                result.append(current);
                found++;
            }
            current++;
        }
        
        // 打印结果
        System.out.println(result.toString());
        scanner.close();
    }
}

注意点

  • 你给出的期望输出示例13,17,19,23,27中,27不是质数(27=3×9),正确的第5个质数应该是29,运行上述代码输入起始数字11、数量5时,输出会是13,17,19,23,29。
  • 若需要处理非正整数输入,可以添加额外的校验逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:07:06