我正在研究用Java实现的素数分解程序。目的是找到最大的素因600851475143(项目Euler问题3)。我想我已经完成了大部分工作,但是却遇到了一些错误。而且我的逻辑似乎不对,特别是我为检查数字是否为质数而设置的方法。
public class PrimeFactor {
public static void main(String[] args) {
int count = 0;
for (int i = 0; i < Math.sqrt(600851475143L); i++) {
if (Prime(i) && i % Math.sqrt(600851475143L) == 0) {
count = i;
System.out.println(count);
}
}
}
public static boolean Prime(int n) {
boolean isPrime = false;
// A number is prime iff it is divisible by 1 and itself only
if (n % n == 0 && n % 1 == 0) {
isPrime = true;
}
return isPrime;
}
}
编辑
public class PrimeFactor {
public static void main(String[] args) {
<