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

最大质因数查找器while循环后代码不执行问题排查求助

最大质因数查找器循环后代码未执行问题排查

问题现象

开发的最大质因数查找器中,while循环结束后的打印语句始终无法执行。以输入45为例,控制台输出到9 is not a prime factor后直接退出程序,循环收尾的打印代码完全没有运行。

代码问题分析

核心问题出在质数检查的for循环逻辑中:
当处理因数9时,j遍历到3时触发9%3==0的判断,此时代码执行了return -1——这个return会直接终止整个getLargestPrime方法,导致while循环后续的迭代、循环结束后的打印语句完全没有执行机会。

修复方案

将for循环内的return -1改为仅跳出当前质数检查循环即可,我们只需要标记当前因数非质数,不需要终止整个方法。可以通过添加标记变量或直接break来实现。

修改后的代码示例

public class LargestPrime {
    public static int getLargestPrime(int number) {
        if(number <=1){
            return -1;
        }
        int largestPrime = 0;
        int factor = 0;
        int i =1;
        while(i < number) {
            i++;
            factor = number % i;
            if (factor == 0) {
               int primeCheck = i;
                System.out.println(i + " is a factor of " + number);
                boolean isPrime = true;
                // 修正偶数判断:2是质数,需单独排除
                if(primeCheck % 2 == 0 && primeCheck != 2){
                    System.out.println(primeCheck + " is not a prime factor");
                    continue;
                }
                // 优化质数检查:遍历到平方根即可,减少循环次数
                for(int j = 2; j <= Math.sqrt(primeCheck); j++){
                    if(primeCheck % j == 0){
                        System.out.println(primeCheck + " is not a prime factor");
                        isPrime = false;
                        break;
                    }
                }
                if(isPrime){
                    largestPrime = primeCheck;
                    System.out.println(primeCheck + " is a prime factor");
                }
            }
        }
        System.out.println("loop has ended");
        System.out.println(largestPrime + " is the largest prime factor");
        return largestPrime;
    }
}

关键修改说明

  1. 用isPrime标记变量替代return -1,发现非质数时仅跳出当前质数检查循环,不终止整个方法
  2. 优化质数检查逻辑:遍历到Math.sqrt(primeCheck)即可,大幅减少循环迭代次数
  3. 修正偶数判断逻辑:避免误判2为非质数

测试结果

输入45时,控制台会完整输出循环结束的打印语句,最终正确输出最大质因数5。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:01:11