素因数分解 - ユーザに数字を入力させ、すべての素因数(存在する場合)を見つけて表示させます。プログラムの素因数分解Javaのプログラム
私は、数字が素数であるかどうかを検証するための方法と、ユーザーからの入力番号が素数を分けることができるかどうかを確認する方法を作成しました。
私はなぜプログラムが動作していないのか、forループ(機能的操作を使うことができる)の問題を理解できません。私を助けてください!
初心者ですが、このコードを改善するためのアドバイスをいただければ幸いです。
import java.util.ArrayList;
import java.util.Scanner;
public class PrimeFactors {
int count, input, num;
Scanner sc = new Scanner(System.in);
ArrayList<Integer> factors = new ArrayList();
public static void main(String[] args) {
PrimeFactors pfo = new PrimeFactors();
pfo.primeFactor();
}
public void primeFactor(){
input = sc.nextInt();
for(num = input; num <= 1; num--){
System.out.println(input);
if(isPrime(num)){
if (divide(num)) {
System.out.println("Adding a new int...");
factors.add(num);
num = input;
}
}
}
for(int element : factors){
System.out.println(factors.get(element));
}
}
public boolean isPrime(int number){
for(int i = 2; i < number; i++){
if(number % i == 0){
count++;
}
}
return (count == 0);
}
public boolean divide(int number){
return (input % number == 0);
}
}
'(NUM =入力; NUM <= 1; NUM - ){' 'あなたはもしかして> ='ここに? –
エラーが表示されますか?あなたの 'divide'関数は' input%num'を呼び出しますが、その時点で入力がセットされていますか?また、多くのコードをすばやく最適化できます。例えば、あなたの 'isPrime'関数では、まず分数を2でチェックし、次にi = 3からループし、毎回2をインクリメントするのはどうですか? (つまり、チェックオッズのみ)。そして、要因を見つけると即座に「中断する」。 –