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

入力された数値がネオン数かどうかを判定する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であるため、どちらもネオン数に該当します。この性質を利用すると、小さな範囲でネオン数を探すプログラムを作ることもできます。


  1. Javaで整数の実際のビットを反転する方法を解説

    負でない整数 n が与えられます。この記事の目標は、n のビットを反転し、その結果得られる数値を出力することです。ビットを反転する際には、整数の実際の2進表現がそのまま使われ、先頭の0(リーディングゼロ)は考慮されません。入出力の具体例入力: 13出力: 与えられた数の実際のビットを反転した結果は 11(13)10 = (1101)2 ビットを反転すると: (1011)2 = (11)10解説: 入力された数値から2進数のビット列を取得し、それを反転させた後、最後に10進数形式へ変換して結果として返しています。入力: 18出力: 与えられた数の実際のビットを反転した結果は 9(18)10 =

  2. Javaで数値がフィボナッチ数かどうかを判定する方法|完全平方数を使ったチェックプログラム

    ある整数がフィボナッチ数(0, 1, 1, 2, 3, 5, 8, 13, 21…と続く数列に含まれる数)であるかどうかは、実際に数列を生成しなくても、数学的な性質を利用することで効率的に判定できます。 判定の原理:完全平方数の性質 有名な定理によると、n がフィボナッチ数であるのは、「5n² + 4」または「5n² − 4」のどちらか一方が完全平方数になる場合、かつその場合に限ることが証明されています。これを利用すると、O(1) に近い計算量でフィボナッチ数かどうかをチェックできます。 フィボナッチ数判定のJavaプログラム 以下が、与えられた数値がフィボナッチ数かどうかをチェックするJav