【发布时间】:2017-07-29 20:43:21
【问题描述】:
package Exercises;
import java.math.BigInteger;
public class LargestPrimeFactor {
public static void main(String[] args) {
BigInteger x = new BigInteger ("600851475143");
BigInteger prime = new BigInteger ("0");
for (BigInteger i = new BigInteger("2"); i.compareTo(x.divide(new BigInteger("2"))) < 1; i = i.add(new BigInteger("1")))
{
if (x.mod(i) == new BigInteger ("0"))
if (isPrime(i))
prime = i;
}
System.out.println(prime);
}
public static boolean isPrime (BigInteger number)
{
for (BigInteger i = new BigInteger("2"); i.compareTo(number.divide(new BigInteger("2"))) < 1; i = i.add(new BigInteger("1")))
{
if (number.mod(i) == new BigInteger("0"))
return false;
}
return true;
}
}
所以我试图找到 600851475143 的最大素数,但是当我运行它时它不显示任何内容并且它一直在运行我该如何解决这个问题?
【问题讨论】:
-
好吧,对于初学者来说,您可以使用更有效的质数检查。
-
您是否需要找到特定数字的最大素数(
600851475143)或者您的输入不是常数? -
这个号码
-
您是否用一些较小的数字 (
< 100) 对其进行了测试,您知道正确的结果,因此可以确认您的算法甚至可以正常工作? -
@Zabuza 早上不会这样做
标签: java prime-factoring