Java Long 的最大质因数

标签 java prime-factoring

我正在尝试找到一个大数中最大的质因数。例如,如果该号码是 573849284703,我的代码将如下所示:

public static void main(String[] args) {

    long number = 573849284703l;

    System.out.println(lgstprmfactor(number));

}

public static long lgstprmfactor(long number) {
    for (long i = 286924642352l; i > 0; i--) {
        if (number % i == 0 && isPrime(i) == true) {
            long answer = i;
            return answer;
        }
    }
    return 0;
}

public static boolean isPrime(long i) {
    for (long c = 2; c < i; c++) {
        if (i % c == 0)
            return false;
    }
    return true;
}

但是它需要很长时间才能运行 - 有什么建议可以加快速度或优化代码吗?

最佳答案

提高运行时间的一个快速解决方案可能是在多个线程中实现算法,这些线程同时检查该数字是否是不同范围内的素因子。 IE。创建一个线程来检查它是否是 0 到 1000000 之间的质因数,然后创建一个用于检查 1000001+ 等的线程。

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

相关文章:

java - View.getId() 有效,而 button.getId() 无效

java - 内存使用本地变量而不是内联 Java

java - 如何将原始 int 传递给我的 AsyncTask?

java - 如何获得两个数字之间的最大质因数并将它们存储在数组中?

algorithm - 在给定范围内有多少个数字具有最大数量的唯一质因数

c++ - 查找最大质因数 - 代码的复杂性

java - 我导入 java.math.*;但java仍然找不到符号sqrt(double)...?

python - 在Python中查找给定数字的最大素因数

java - 代码抛出 IndexOutOfBoundsException?

java - 在 Android 中使用改造