入力された数値がネオン数かどうかを判定するJavaプログラムの書き方
この記事では、入力された数値がネオン数(Neon Number)であるかどうかを判定するJavaプログラムの作成方法について解説します。
ネオン数とは、「その数値を2乗した結果の各桁の数字の合計が、元の数値と等しくなる数」のことです。例えば、9はネオン数です。なぜなら、9² = 81 となり、その各桁の合計は 8 + 1 = 9 となり、元の数値と一致するからです。
アルゴリズム
ネオン数を判定するための手順は以下の通りです。
ステップ1:開始する ステップ2:整数型変数 my_input を宣言する ステップ3:ユーザーに整数値の入力を促す/または値をハードコードする ステップ4:値を読み取る ステップ5:入力値の2乗を計算し、変数 input_square に格納する ステップ6:input_square の各桁の合計を計算し、my_input と比較する ステップ7:一致すれば入力値はネオン数、一致しなければネオン数ではない ステップ8:結果を表示する ステップ9:終了する
例1:ユーザーからの入力を受け付ける場合
以下の例では、Scanner クラスを使用してユーザーから数値を入力として受け取り、それがネオン数かどうかを判定します。オンラインコンパイラなどで実際に動作を試すこともできます。
import java.util.Scanner;
public class NeonNumbers{
public static void main(String[] args){
int my_input, input_square, sum=0;
Scanner my_scanner = new Scanner(System.in);
System.out.println("必要なパッケージがインポートされました");
System.out.println("Scannerオブジェクトが定義されました");
System.out.println("数値を入力してください:");
my_input=my_scanner.nextInt();
input_square=my_input*my_input;
while(input_square>0){
sum=sum+input_square%10;
input_square=input_square/10;
}
if(sum!=my_input)
System.out.println("入力された数値はネオン数ではありません。");
else
System.out.println("入力された数値はネオン数です。");
}
}出力結果
必要なパッケージがインポートされました Scannerオブジェクトが定義されました 数値を入力してください: 9 入力された数値はネオン数です。
例2:値を事前に定義しておく場合
次の例では、整数値をあらかじめプログラム内で定義し、その値を使ってネオン数かどうかを判定します。ユーザー入力が不要なため、処理の流れをシンプルに確認できます。
public class NeonNumbers{
public static void main(String[] args){
int my_input, input_square, sum=0;
my_input= 9;
System.out.printf("対象の数値は %d です", my_input);
input_square=my_input*my_input;
while(input_square>0){
sum=sum+input_square%10;
input_square=input_square/10;
}
if(sum!=my_input)
System.out.println("\n入力された数値はネオン数ではありません。");
else
System.out.println("\n入力された数値はネオン数です。");
}
}出力結果
対象の数値は 9 です 入力された数値はネオン数です。
補足:ネオン数について
ネオン数は非常に珍しい数で、0と1、そして9が代表的な例です。例えば、1² = 1 となり桁の合計も1、0² = 0 となり合計も0であるため、どちらもネオン数に該当します。この性質を利用すると、小さな範囲でネオン数を探すプログラムを作ることもできます。
-
Javaで整数の実際のビットを反転する方法を解説
負でない整数 n が与えられます。この記事の目標は、n のビットを反転し、その結果得られる数値を出力することです。ビットを反転する際には、整数の実際の2進表現がそのまま使われ、先頭の0(リーディングゼロ)は考慮されません。入出力の具体例入力: 13出力: 与えられた数の実際のビットを反転した結果は 11(13)10 = (1101)2 ビットを反転すると: (1011)2 = (11)10解説: 入力された数値から2進数のビット列を取得し、それを反転させた後、最後に10進数形式へ変換して結果として返しています。入力: 18出力: 与えられた数の実際のビットを反転した結果は 9(18)10 =
-
Javaで数値がフィボナッチ数かどうかを判定する方法|完全平方数を使ったチェックプログラム
ある整数がフィボナッチ数(0, 1, 1, 2, 3, 5, 8, 13, 21…と続く数列に含まれる数)であるかどうかは、実際に数列を生成しなくても、数学的な性質を利用することで効率的に判定できます。 判定の原理:完全平方数の性質 有名な定理によると、n がフィボナッチ数であるのは、「5n² + 4」または「5n² − 4」のどちらか一方が完全平方数になる場合、かつその場合に限ることが証明されています。これを利用すると、O(1) に近い計算量でフィボナッチ数かどうかをチェックできます。 フィボナッチ数判定のJavaプログラム 以下が、与えられた数値がフィボナッチ数かどうかをチェックするJav