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

Java求输入正整数最大因子代码异常:输入50输出2510求排查

如何修复“显示输入数字最大因子”代码的错误?

你写了一段Java代码想实现显示输入数字的最大因子,但输入50时却输出了2510,这明显不符合预期。我们来一步步拆解代码里的问题,然后给出修复方案。

你的原代码

package Testing; 
import java.util.Scanner; 
public class test { 
    public static void main (String[] args){ 
        Scanner scan1 = new Scanner(System.in); 
        System.out.print("Input positive integer: "); 
        int n = scan1.nextInt(); 
        for (int i = 2; i < Math.sqrt(n); i++){ 
            if (n % i == 0){ 
                System.out.print(n/i); 
            } 
        } 
    } 
}

代码里的核心错误

1. 循环条件遗漏了等于的情况

你用了i < Math.sqrt(n),但正确的循环条件应该是i <= Math.sqrt(n)。举个例子,50的平方根约是7.07,这个条件会让i=7时无法进入循环;如果是完全平方数比如36,它的平方根是6,漏掉等于的情况会直接忽略i=6这个关键因子,导致结果错误。

2. 找到因子就直接输出,没有记录最大值

当前代码只要找到一个能整除n的i,就直接输出n/i,而不是记录所有可能因子里最大的那个。比如输入50时,循环会找到i=2(输出25)和i=5(输出10),两个结果直接连在一起输出,就变成了2510。

3. 没有处理质数的情况

如果输入的是质数(比如7),它除了1和自身没有其他因子,你的循环里找不到任何符合条件的i,所以不会输出任何内容,这显然不符合需求。

修复后的代码

下面是修正后的代码,解决了以上所有问题:

package Testing; 
import java.util.Scanner; 
public class test { 
    public static void main (String[] args){ 
        Scanner scan1 = new Scanner(System.in); 
        System.out.print("Input positive integer: "); 
        int n = scan1.nextInt(); 
        int maxFactor = 1; // 默认最大真因子是1

        // 遍历到平方根,寻找所有因子对
        for (int i = 2; i <= Math.sqrt(n); i++){ 
            if (n % i == 0){ 
                // 因子对是i和n/i,取较大的那个和当前maxFactor比较
                int currentFactor = Math.max(i, n/i);
                if (currentFactor > maxFactor){
                    maxFactor = currentFactor;
                }
            }
        }

        // 处理特殊情况:如果输入的是1,没有除自身外的因子
        if (n == 1) {
            System.out.println("1没有除自身外的因子");
        } else {
            // 如果你想要把数字自身作为最大因子(比如输入50输出50),可以改成 Math.max(maxFactor, n)
            System.out.println("最大真因子是:" + maxFactor);
        }
    } 
}

测试验证

  • 输入50:输出最大真因子是:25,符合预期
  • 输入7(质数):输出最大真因子是:1
  • 输入36:输出最大真因子是:18
  • 输入1:输出1没有除自身外的因子

这样修改后,代码就能正确找到输入数字的最大真因子啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:27:46