ホームページ >Java >&#&チュートリアル >Javaのスミス番号
Java には異なる種類の機能があります。スミス番号は、ユーザーに提供される機能の 1 種類です。基本的に、スミス数は、すべての桁の加算がそのすべての素因数 (1 を除く) のすべての桁の加算に等しい合成数 (整数体系では底が 10) に他なりません。これはスミスとして知られています。番号。スミスナンバーの別名はジョークナンバーです。定義上、条件を満たせばすべての素数は自然に除外されると言えます。通常、スミス数は、ユーザーの要件および問題ステートメントの要件の一部に従って、数学で使用される数体系の非常に基本的なサブフィールドです。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
次に、スミス番号の背後にあるロジックを次のように見てみましょう。
スミス数のロジックは非常に簡単です。次の数字を考えてみましょう。そうすれば、次のようなロジックを簡単に理解できます。
例: 指定された番号がスミス番号であるかどうかを確認する必要があるとします。
与えられた数字は: 95
まず、95 の素因数が 19 と 5 (5, 19) であることを調べる必要があります
次に、9 + 5 = 14 となる数字の合計を求めます
素因数の合計は 5 + 1 + 9 = 15
次に、両方の結果を比較します。ここで、14 は 15 に等しくありません。したがって、指定された数値は素数ではありません。
次のような別の数を考えてみましょう。
与えられた番号: 58
まず、58 = 2 と 29 の素因数を求めます
素因数の合計は = 2 + 2 +9 = 13
指定された数字の合計は = 5 + 8 = 13 です
次に両方の結果を比較します。ここでは両方の結果が同じであるか、等しいと言えます。したがって、与えられた番号はスミス番号であると言えます。
これはスミス数の背後にある非常に単純なロジックです。素因数和と桁和を比較するだけで済みます。両方の合計が等しい場合、指定された数値はスミス数値であり、それ以外の場合、その数値はスミス数値ではありません。
次に、次のように Java で指定された数値が smith であるかどうかを確認する方法を見てみましょう。
上記の点で、スミス数値のさまざまな例についてはすでに説明しました。次に、スミス番号を見つけるためのさまざまな手順を次のように見てみましょう。
1.まず、初期化するか、ユーザーから数値を読み取る必要があります。
2.その後、指定された数値の桁の合計を見つける必要があります。
3.次に、指定された数値の素因数を見つける必要があります。
4.次に、素因数の桁の合計を計算します。
5.次に、指定された数値の桁の合計と素因数の桁の合計を比較します。
a.両方の合計が等しい場合、指定された数値がスミス数値であると言えます。
b.それ以外の場合、合計が異なるため、指定された数値はスミス数値ではないと考えることができます。
したがって、上記の手順は Java でスミス数値プログラムを実装するのに役立ちます。
次に、理解を深めるために、次のように Java のスミス数値のさまざまな例を見てみましょう。
コード:
import java.util.*; public class Smith_Num { static int F_Sum_P_Fact(int no) { int j=2, add=0; while(no>1) { if(no%j==0) { add=add+F_S_Digit(j); no=no/j; } else { do { j++; } while(!isPrime(j)); } } return add; } static int F_S_Digit(int no) { int sum=0; while(no>0) { sum=sum+no%10; no=no/10; } return sum; } static boolean isPrime(int j) { boolean b=true; int d=2; while(d<Math.sqrt(j)) { if(j%d==0) { b=false; } d++; } return b; } public static void main(String args[]) { Scanner s_c = new Scanner(System.in); System.out.print("Enter a number: "); int no=s_c.nextInt(); int x = F_S_Digit(no); int y = F_Sum_P_Fact(no); System.out.println("addition of digit = "+x); System.out.println("addition of prime factors digits is = "+y); if(x==y) System.out.print("The user enterd number is smith number."); else System. out.print("The user entered number is not smith number."); } }
説明
上記のプログラムでは、スミス番号プログラムを Java で実装しようとしています。ここでは、まず素因数の桁を合計する関数を作成しました。同様に、上記のプログラムで示したように、指定された数値の桁の合計を求める関数も作成しました。次に、ブール関数を使用して、与えられた数値が素数かどうかをチェックする関数を作成しました。次に、メイン関数を作成します。メイン関数内でユーザーから数値を受け取り、すでに作成したすべての関数を呼び出し、両方の合計を比較します。合計が等しい場合は、指定された数値をスミス番号として出力し、合計が等しくない場合は、指定された数値はスミス番号ではないと出力します。上記のプログラムの最終出力を、次のスクリーンショットを使用して説明します。
次のような別の例を見てみましょう。
コード:
import java.util.*; public class Smith_Num_2 { static List<Integer> F_P_Fact(int no) { List<Integer> output = new ArrayList<>(); for (int j = 2; no % j == 0; no = no/j) output.add(j); for (int j = 3; j* j <= no; j=j+2) { while (no % j == 0) { output.add(j); no = no/j; } } if (no != 1) output.add(no); return output; } static int S_Digit(int no) { int s= 0; while (no > 0) { s =s+(no % 10); no = no/10; } return s; } public static void main(String args[]) { for (int no = 1; no < 5000; no++) { List<Integer> Fact = F_P_Fact(no); if (Fact.size() > 1) { int s = S_Digit(no); for (int fa : Fact) s =s-S_Digit(fa); if (s == 0) System.out.println(no); } } } }
説明
上記の例では、示されているように、最大 5000 までのすべてのスミス番号を見つけようとしています。上記のプログラムの最終出力を、次のスクリーンショットを使用して説明します。
この記事から Java のスミス数を学んでいただければ幸いです。上記の記事から、スミス数の基本的なロジックを学び、スミス数のさまざまな例も確認しました。この記事から、Java でスミス番号をいつどのように使用するかを学びました。
以上がJavaのスミス番号の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。