java - Java中数字的最大质因数

标签 java algorithm primes prime-factoring

我在解决这个问题时试图找到一个数的最大质因数 here .我认为我做的一切都是对的,但是其中一个测试用例(#2)失败了,我想不出任何可能失败的角落案例。这是我的代码,请看看并尝试发现一些东西。

public class ProblemThree
{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        int T = scanner.nextInt();
        for (int i = 0; i < T; i++)
        {
            System.out.println(largestPrime(scanner.nextLong()));
        }
    }

    private static long largestPrime(long n)
    {
        while (n % 2 == 0)
        {
            n = n / 2;  // remove all the multiples of 2
        }
        while (n % 3 == 0)
        {
            n = n / 3; // remove all the multiples of 2
        }

        // remove multiples of prime numbers other than 2 and 3
        while (n >= 5)
        {
            boolean isDivisionComplete = true;
            for (long i = 5; i < Math.ceil(Math.sqrt(n)); i++)
            {
                if (n % i == 0)
                {
                    n = n / i;
                    isDivisionComplete = false;
                    break;
                }
            }
            if (isDivisionComplete)
            {
                break;
            }
        }
        return n;
    }
}

基本上,我正在做的是:

Largest_Prime(n):
1. Repeatedly divide the no by any small number, say x where 0 < x < sqrt(n).
2. Then set n = n/x and repeat steps 1 and 2 until there is no such x that divides n.
3  Return n.

最佳答案

您的代码中似乎有一些错误,例如当您输入 16 largestPrime 函数返回 1 时。当输入是 3 的幂时,这是正确的。

关于java - Java中数字的最大质因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34353648/

相关文章:

java - 如何通过 youtube API 获取已删除视频的列表

java - 在JAVA中仅使用max和min函数找到三个随机数的中间数

java - 遍历 HashMap 来查找键的数量

java - 用java计算第n个素数?

java - Netbeans 无法识别 JAR 文件

python - 在 python 中创建列表的特定排列

php - 排序PHP数组升序

ruby - 如何生成前 n 个素数?

javascript - 如何在 JavaScript 中找到整数的质因数?

algorithm - 找到前 N 个自然数的因数的最佳算法是什么?