這裏是我輸出給定數字的素因式分解的程序。我仍然只是一個初學者,所以我知道它不是最有效的代碼。當我輸入相對較大的數字時會出現問題。如何糾正我的素數分解程序?
輸入:11輸出:11
輸入:40輸出:2 2 2 5
輸入:5427輸出:3 3 3 3 67
輸入:435843輸出:3 3 79 613
輸入:23456789輸出:無(有似乎是一個無限循環的代碼應該返回23456789,因爲它本身就是一個素數)
什麼可能CAUS這個問題?
import java.util.Scanner;
public class PrimeFactorization {
public static boolean isPrime(long n) {
boolean boo = false;
long counter = 0;
if (n == 1) {
boo = false;
} else if (n == 2) {
boo = true;
} else {
for (long i = 2; i < n; i++) {
if (n % i == 0) {
counter++;
}
}
if (counter == 0) {
boo = true;
}
}
return boo;
}
public static void primeFactorization(long num) {
for (long j = 1; j <= num; j++) {
if (isPrime(j)) {
if (num % j == 0) {
while (num % j == 0) {
System.out.printf(j + " ");
num = num/j;
}
}
}
if (num == 1) {
break;
}
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter any number:");
long num = scanner.nextLong();
System.out.print("Prime factorization of your number is: ");
primeFactorization(num);
scanner.close();
}
}
請附上您的'primeFactorization'方法的其餘部分;它看起來像你只複製了最後一部分。 – rgettman 2015-03-30 18:25:00