我正在开发一个用Java实现的质因数分解程序。目标是找出600851475143(欧拉计划问题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) {
for (int i = 2; i <= 600851475143L; i++) {
if (isPrime(i) == true) {
System.out.println(i);
}
}
}
public static boolean isPrime(int number) {
if (number == 1) return false;
if (number == 2) return true;
if (number % 2 == 0) return false;
for (int i = 3; i <= number; i++) {
if (number % i == 0) return false;
}
return true;
}
}
n%n == 0 && n%1 == 0
。但是您缺少定义中的“仅”这个词。 - Aaron Novstrup