如何显示输入数字的最大因子?

时间:2018-04-29 04:53:34

标签: java

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);
            }
        }

    }

}  

当我运行此代码时,每当我输入50时,它最终会打印数字2510.我做错了什么?

2 个答案:

答案 0 :(得分:1)

正如评论中提到的,你非常接近,但是在找到答案后你需要停止迭代。这可以通过break关键字完成,该关键字退出最内层循环。

for (int i = 2; i < Math.sqrt(n); i++){
    if (n % i == 0){
        System.out.print(n/i);
        break;
    }
}

答案 1 :(得分:1)

当你找到第一个素因子时,你必须停下来。不要忘记,在您的示例中Math.sqrt(n)是每个循环计算的。

public static int getLargestFactor(int num) {
    for (int i = 2, max = (int)Math.sqrt(num); i <= max; i++)
        if (num % i == 0)
            return num / i;

    return num;
}