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