我正在尝试找到一个大数中最大的质因数。例如,如果该号码是 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/