整数の各素因数の数を数えたい。たとえば、18 = 2 ^ 1 * 3^2です。各素数のすべての指数部分を取得したいと思います。18番の場合、1 + 2=3です。
以下は、整数のすべての素因数を生成するプログラムです。
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 2; i <= n / i; i++) {
while (n % i == 0) {
System.out.print(i + ", ");
n /= i;
}
}
if (n > 1)
System.out.print(n + ", ");
入力18の場合、このプログラムは2、3、3、を出力します。要件を満たすために、各素因数の発生をカウントするには、最初にそれらすべてをリストに追加し、次にリストのfor
開始から終了までのループで各数の発生をカウントできます。しかし、この考えは私には良くないようです。不必要なことfor
に、すべての素因数に対して1つのループを追加しています。これは、この素因数がリストにn回含まれていることを示しています。
整数の素因数の個々の数を取得するためのより良いアプローチ。