Javaで完全数を判定するプログラムの書き方【初心者向け解説】
本記事では、ある数が完全数であるかどうかを判定するJavaプログラムの作成方法について解説します。
完全数とは、その数自身を除いた約数(真の約数)の総和が、元の数と等しくなる正の整数のことです。例えば「6」は、約数が1・2・3であり、1+2+3=6となるため完全数です。同様に「28」や「496」も完全数として知られています。
実行例
入力
ユーザーから次の値が入力されたとします。
Enter the number : 496
出力
期待される出力は以下の通りです。
The number 496 is a perfect number
アルゴリズム
処理の流れは以下のステップで構成されます。
Step 1 - 処理を開始する Step 2 - long型変数 my_input、my_sum と int型変数 i を宣言する Step 3 - ユーザーから値を読み込む、または値を定義する Step 4 - whileループを使い、指定した条件に達するまで繰り返し処理を行う Step 5 - 「my_input % i」の余りが0かどうかを判定する。余りが0の場合、my_sum に i を加算して my_sum に代入し、i をインクリメントする Step 6 - my_sum の値が入力値と一致すれば完全数、そうでなければ完全数ではない Step 7 - 結果を表示する Step 8 - 処理を終了する
例1:ユーザー入力を受け付ける場合
この例では、Scannerクラスを使ってユーザーからの入力を受け付け、その値が完全数かどうかを判定します。
import java.util.Scanner;
public class PerfectNumber{
public static void main(String args[]){
long my_input, my_sum;
int i;
my_sum=0;
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.nextLong();
i=1;
while(i <= my_input/2){
if(my_input % i == 0){
my_sum = my_sum + i;
}
i++;
}
if(my_sum==my_input)
System.out.println("The number " +my_input+" is a perfect number");
else
System.out.println("The number " +my_input+" is not a perfect number");
}
}出力結果
Required packages have been imported A reader object has been defined Enter the number : 496 The number 496 is a perfect number
例2:値を事前に定義しておく場合
この例では、整数値をあらかじめプログラム内で定義し、その値を使って判定を行います。動作確認やテストの際に便利な方法です。
import java.util.Scanner;
public class PerfectNumber{
public static void main(String args[]){
long my_input, my_sum;
int i;
my_sum=0;
my_input = 496;
System.out.println("The number is defined as " +my_input);
i=1;
while(i <= my_input/2){
if(my_input % i == 0){
my_sum = my_sum + i;
}
i++;
}
if(my_sum==my_input)
System.out.println("The number " +my_input+" is a perfect number");
else
System.out.println("The number " +my_input+" is not a perfect number");
}
}出力結果
The number is defined as 496 The number 496 is a perfect number
補足:判定ロジックのポイント
このプログラムでは、ループ条件を i <= my_input / 2 としています。これは、ある数の約数(その数自身を除く)は必ず元の数の半分以下になるためで、無駄な計算を省き効率化しています。また、剰余演算子 % を使って割り切れるかどうかを確認することで、約数を見つけて合計に加算していきます。
-
Javaで台形の面積を求めるプログラムの作成方法を解説
この記事では、Javaを使って台形(トラペジウム)の面積を求める方法について詳しく解説します。台形とは、少なくとも1組の対辺が互いに平行になっている四角形のことです。平行な2つの辺は「底辺」と呼ばれ、平行でない残りの2つの辺は「脚」と呼ばれます。英語圏では trapezoid(トラペゾイド)と呼ばれることもあります。 台形の面積は、次の公式を使って計算できます。 面積 = (高さ ÷ 2) × (上底 + 下底) すなわち、 面積 = ½ × (平行な2辺の長さの合計) × (平行な2辺間の垂直距離) 以下に具体的なイメージを示します。平行な2辺の長さを a、b、台形の高さを h としたとき
-
【Java入門】長方形の周囲(外周)を求めるプログラムの作り方
長方形の周囲とは? この記事では、Javaを使って長方形の周囲(外周)を求める方法を解説します。長方形の周囲とは、長方形の4つの辺すべての長さを足し合わせた合計のことで、次の図のように「縦の辺2本」と「横の辺2本」の長さを合計したものに相当します。 長方形は向かい合う辺の長さが等しいという性質を持つため、周囲は次の式で計算できます。 周囲 = 2 ×(縦の長さ + 横の長さ) 入力と出力の例 たとえば、入力が次の値であるとします。 長方形の各辺の長さ:5, 8, 5, 8 このとき、期待される出力は次のとおりです。 Perimeter : 26 アルゴリズム 処理の流れは以下のようになりま