Вот моя программа для вывода простой факторизации заданного числа. Я все еще просто новичок в java, поэтому я знаю, что это не самый эффективный код. Проблема возникает при вводе относительно больших чисел.Как исправить мою основную программу факторизации?
Вход: 11 Выход: 11
Вход: 40 Выход: 2 2 2 5
Вход: 5427 Выход: 3 3 3 3 67
Входной сигнал: 435843 Выход: 3 3 79 613
Input: 23456789 Output: нет (нет, кажется, бесконечный цикл и код должен возвращать 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