Java
 Computer >> コンピューター >  >> プログラミング >> Java

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 としています。これは、ある数の約数(その数自身を除く)は必ず元の数の半分以下になるためで、無駄な計算を省き効率化しています。また、剰余演算子 % を使って割り切れるかどうかを確認することで、約数を見つけて合計に加算していきます。

  1. Javaで台形の面積を求めるプログラムの作成方法を解説

    この記事では、Javaを使って台形(トラペジウム)の面積を求める方法について詳しく解説します。台形とは、少なくとも1組の対辺が互いに平行になっている四角形のことです。平行な2つの辺は「底辺」と呼ばれ、平行でない残りの2つの辺は「脚」と呼ばれます。英語圏では trapezoid(トラペゾイド)と呼ばれることもあります。 台形の面積は、次の公式を使って計算できます。 面積 = (高さ ÷ 2) × (上底 + 下底) すなわち、 面積 = ½ × (平行な2辺の長さの合計) × (平行な2辺間の垂直距離) 以下に具体的なイメージを示します。平行な2辺の長さを a、b、台形の高さを h としたとき

  2. 【Java入門】長方形の周囲(外周)を求めるプログラムの作り方

    長方形の周囲とは? この記事では、Javaを使って長方形の周囲(外周)を求める方法を解説します。長方形の周囲とは、長方形の4つの辺すべての長さを足し合わせた合計のことで、次の図のように「縦の辺2本」と「横の辺2本」の長さを合計したものに相当します。 長方形は向かい合う辺の長さが等しいという性質を持つため、周囲は次の式で計算できます。 周囲 = 2 ×(縦の長さ + 横の長さ) 入力と出力の例 たとえば、入力が次の値であるとします。 長方形の各辺の長さ:5, 8, 5, 8 このとき、期待される出力は次のとおりです。 Perimeter : 26 アルゴリズム 処理の流れは以下のようになりま