工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Javaでアームストロング数を判定・列挙するプログラム

アームストロング数とは

アームストロング数(自己愛数、ナルシシスト数とも呼ばれる)とは、その数の各桁の数字を桁数乗した和が元の数と等しくなる数のことです。

数学的に、桁をx、y、…、z、桁数をnとすると、以下が成り立ちます:

xy…z = xn + yn + … + zn

アームストロング数の例:

0, 1, 4, 5, 9, 153, 371, 407, 8208, …

与えられた数がアームストロング数か判定するJavaプログラム

以下は、与えられた整数がアームストロング数かどうかを検証するコンパクトなJava実装です。アルゴリズムは各桁をイテレートし、各桁の3乗を累積(3桁の数に焦点を当てているため)、その和を元の数と比較します。

// while文を使ってアームストロング数を判定
package com.guru99;
public class ArmstrongNumber {
    public static void main(String[] args) {
        int inputArmstrongNumber = 153; // テストする数
        int tempNumber, digit, digitCubeSum = 0;
        tempNumber = inputArmstrongNumber;
        while (tempNumber != 0) {
            System.out.println("Current Number is " + tempNumber);
            digit = tempNumber % 10;
            System.out.println("Current Digit is " + digit);
            digitCubeSum += digit * digit * digit;
            System.out.println("Current digitCubeSum is " + digitCubeSum);
            tempNumber /= 10;
        }
        if (digitCubeSum == inputArmstrongNumber)
            System.out.println(inputArmstrongNumber + " is an Armstrong Number");
        else
            System.out.println(inputArmstrongNumber + " is not an Armstrong Number");
    }
}

実行結果

Current Number is 153
Current Digit is 3
Current digitCubeSum is 27
Current Number is 15
Current Digit is 5
Current digitCubeSum is 152
Current Number is 1
Current Digit is 1
Current digitCubeSum is 153
153 is an Armstrong Number

0から999までの全アームストロング数を列挙するJavaプログラム

以下のプログラムは、0〜999の範囲内の全アームストロング数を列挙する方法を示します。範囲にはfor文、各候補の処理にはwhile文を使用します。

// 0から999までのアームストロング数を列挙
package com.guru99;
public class ArmstrongNumber {
    public static void main(String[] args) {
        for (int inputArmstrongNumber = 0; inputArmstrongNumber < 1000; inputArmstrongNumber++) {
            int tempNumber = inputArmstrongNumber;
            int digitCubeSum = 0;
            while (tempNumber != 0) {
                int digit = tempNumber % 10;
                digitCubeSum += digit * digit * digit;
                tempNumber /= 10;
            }
            if (digitCubeSum == inputArmstrongNumber)
                System.out.println(inputArmstrongNumber + " is an Armstrong Number");
        }
    }
}

実行結果

0 is an Armstrong Number
1 is an Armstrong Number
153 is an Armstrong Number
370 is an Armstrong Number
371 is an Armstrong Number
407 is an Armstrong Number

Java

  1. チタンフライパンのお手入れ方法:長寿命と性能維持のためのエキスパートのコツ
  2. Java Hello World:最初のプログラム
  3. Java拡張forループをマスター:構文、例、ベストプラクティス
  4. Java コンストラクタオーバーロード完全解説:実践コード例付き
  5. Javaで素数判定を行うプログラム
  6. Javaで1から100までの素数を列挙するプログラム
  7. Javaでフィボナッチ数列を生成:for文、while文、再帰の実装例
  8. Javaで再帰を使って文字列を反転させる方法
  9. Javaで回文数を判定する:while文とfor文を使ったアルゴリズム
  10. Javaで挿入ソート:わかりやすい例とステップバイステップガイド
  11. Javaで選択ソート:ステップバイステップ例と完全コード