【Java入門】数値の約数をすべて表示するプログラムの書き方
この記事では、Javaを使って数値の約数(因数)を表示する方法について詳しく解説します。
約数とは?
約数とは、ある数を余りなく割り切ることができる数のことです。言い換えると、別の数を作るために掛け合わせる数とも表現できます。
例えば、3と5を掛けると15になります。このとき、3と5は「15の約数」であると言えます。また、12の場合を見てみると、1・2・3・4・6・12はいずれも12を余りなく割り切れるため、これらはすべて12の約数です。
最大の約数と最小の約数
どのような数でも、最大の約数はその数自身であり、最小の約数は1になります。
- 1はすべての整数の約数です。
- 例えば、12の最大の約数と最小の約数は、それぞれ12と1です。
実行例
ここでは、入力値として45を与えた場合の動作を確認してみましょう。
入力:
Input : 45
出力:
45の約数は: 1 3 5 9 15 45
アルゴリズム
Step 1 - 開始する
Step 2 - 整数型変数 my_input と i を宣言する
Step 3 - ユーザーから値を受け取る、または値を直接定義する
Step 4 - forループで1からmy_inputまで繰り返し処理を行う。
各ループで「my_input % i」の余りを計算し、
余りが0であればiは約数なので、その値を出力対象として扱う
Step 5 - 結果を表示する
Step 6 - 終了する例1:ユーザーからの入力を受け付ける場合
この例では、Scannerクラスを使ってユーザーからの入力を受け付けます。キーボードから任意の数値を入力すると、その約数が画面に表示されます。
import java.util.Scanner;
public class Factors {
public static void main(String[] args) {
int my_input, i;
System.out.println("Required packages have been imported");
Scanner my_scanner = new Scanner(System.in);
System.out.println("A reader object has been defined ");
System.out.print("Enter the number : ");
my_input = my_scanner.nextInt();
System.out.print("The factors of " + my_input + " are: ");
for (i = 1; i <= my_input; ++i) {
if (my_input % i == 0) {
System.out.print(i + " ");
}
}
}
}出力:
Required packages have been imported A reader object has been defined Enter the number : 45 The factors of 45 are: 1 3 5 9 15 45
例2:値を事前に定義しておく場合
この例では、整数値があらかじめコード内で定義されており、その値に対する約数をコンソールに出力します。
import java.util.Scanner;
public class Factors {
public static void main(String[] args) {
int my_input, i;
my_input = 45;
System.out.println("The number is defined as " +my_input);
System.out.print("The factors of " + my_input + " are: ");
for (i = 1; i <= my_input; ++i) {
if (my_input % i == 0) {
System.out.print(i + " ");
}
}
}
}出力:
The number is defined as 45 The factors of 45 are: 1 3 5 9 15 45
まとめ
約数を求める基本的な考え方は、「1からその数自身まで順番に割ってみて、余りが0になる数を探す」というシンプルなものです。%(剰余演算子)とforループを組み合わせるだけで、誰でも簡単に約数を求めるプログラムを実装できます。まずは上記のサンプルコードを実際に動かして、仕組みを体感してみてください。
-
Javaで数の一意な素因数の積を求めるプログラム
ある整数の一意な素因数(重複しない素因数)の積を求めるためのJavaコードは以下の通りです。 例 public class Demo { public static long prime_factors(int num){ long my_prod = 1; for (int i = 2; i <= num; i++){ if (num % i == 0){ boolean is_prime = true; for (int j = 2; j <= i / 2; j
-
数の約数の最小合計を求めるJavaプログラム
ある整数の約数の最小合計を求めるには、素因数分解を利用するのが効果的です。合成数を素因数に分解すると、その和は必ず元の数以下になるため、素因数ごとに足し合わせた値が最小の合計となります。以下に、この考え方を実装したJavaコードを示します。サンプルコードpublic class Demo { static int minimum_sum(int num){ int my_sum = 0; &n