首頁  >  文章  >  Java  >  Java 中的強數

Java 中的強數

WBOY
WBOY原創
2024-08-30 16:27:10511瀏覽

強數是一種特殊的數,可以定義為該數的每位數字的階乘相加,該數等於該數本身。為了更好地理解強數的概念,請看下面的範例:

廣告 該類別中的熱門課程 JAVA 掌握 - 專業化 | 78 課程系列 | 15 次模擬測驗

145這個數字是一個很強的數字。這是因為,如果我們將這個數字的每位數字的階乘相加,您將得到這個數字,即 145 本身,作為總和。 1! + 4! + 5! = 1 + 24 + 120 = 145。

現在讓我們來看看 Java 中檢查數字是否為強數字的邏輯。 下面是檢查一個數字是否是強數字的描述。

  • 接受使用者定義的數字或使用者輸入的數字。將此數字儲存在使用者定義的變數中。現在將此數字複製到另一個臨時使用者定義變數。該變數將用於計算目的。您可以將使用者定義變數命名為“n”,將臨時變數命名為“temp_n”。
  • 現在初始化另一個變數來儲存階乘數字總和。您可以將此變數命名為“total”。
  • 您還需要找到給定數字「​​n」的最後一位數字。將此結果儲存在將儲存結果的變數中,例如「lastdig = n % 10」。
  • 現在你可以求‘lastdig’的階乘了。現在您可以儲存該數字的階乘並將其命名為「fact_n」。
  • 完成此操作後,您可以將階乘新增至「總計」。這可以透過使用 Total = Total + fact_n 來完成。
  • 現在您可以刪除「n」中的最後一位數字,因為不再需要它。
  • 現在重複步驟3到步驟6,直到條件n > 0 滿意。
  • 您可以為此使用循環。它可用於檢查強數的條件。如果滿足條件total == temp_n,則給定的數字是強數字,否則不是。

Java 中的強數範例

在Java中實現強數的邏輯非常容易;讓我們看下面的幾個例子。

範例#1

代碼:

// Program in Java to check if a given number is a strong number or not
import java.util.*;
public class Main
{
public static void main(String[] args) {
int n,i;
int fact_n,lastdig;
Scanner sc = new Scanner(System.in);
System.out.print("\nEnter the number : " );
n = sc.nextInt();
int total = 0;
int temp_n = n;
while(n != 0)
{
i = 1;
fact_n = 1;
lastdig = n % 10;
while(i <= lastdig)
{
fact_n = fact_n * i;
i++;
}
total = total + fact_n;
n = n / 10;
}
if(total == temp_n)
System.out.println(temp_n + " is a strong number\n");
else
System.out.println(temp_n + " is not a strong number\n");
System.out.println();
}
}

輸出:

Java 中的強數

上面的 Java 程式具有程式邏輯中討論的所有變數。它首先找到該數字的模或最後一位數字,直到該數字不為零。完成此操作後,它會增加數字並將其儲存在fact_n中以找出數字的階乘。求和或加法不是在 while 迴圈中進行階乘相加,直到不滿足 i<=lastdig 的條件。在新增“total”後,如果fact_n不等於“temp_n”,則給定的數字不是階乘。另一方面,如果總數和fact_n相同,那麼提到的數字就是強數字。

範例#2

找到強數的另一種方法是利用強數。這裡的數字可以透過命令列參數傳遞給程式。

代碼:

public class Main
{
static int f[] = new int[10];
// Finding factorial for number 0 to 9
static void FirstCompute()
{
f[0] = f[1] = 1;
for (int i = 2; i<10; ++i)
f[i] = f[i-1] * i;
}
// If x is strong true is returned
static boolean isStrong(int x)
{
int Sum_fact = 0;
// Traverse through all digits of x.
int temp_n = x;
while (temp_n>0)
{
Sum_fact += f[temp_n%10];
temp_n /= 10;
}
return (Sum_fact == x);
}
// main function
public static void main (String[] args)
{
// calling preCompute
FirstCompute();
// first pass
int x = 145;
if(isStrong(x))
{
System.out.println("Yes");
}
else
System.out.println("No");
// second pass
x = 534;
if(isStrong(x))
{
System.out.println("Yes");
}
else
System.out.println("No");
}
}

這是判斷數字是否為強數字的另一種方法。在這裡,您可以在運行時使用命令列參數來獲取使用者的輸入。這裡的邏輯保持不變,差異在於輸入在運行時作為參數發送。此程式的輸出將是 YES 或 NO,具體取決於數字是否為強數字。

輸出:

Java 中的強數

這裡的程式正在檢查兩個數字,如果它們是強數字。這裡它找出從 0 到 9 的所有數字的階乘。然後 isStrong 函數驗證該數字是否強。它將遍歷給定數字的所有數字,直到 mod 存在。這裡的 main 函數驗證 precompute() 函數是否給出正確的結果。從用戶接受兩個號碼,這導致檢查並提供該號碼是否為強號碼。主函數首先呼叫函數,該函數計算每個數字的階乘。然後 isStrong() 函數檢查每個數字的階乘總和。它還計算它並以布林值傳回結果,該值是 true 或 false。總的來說,僅傳遞數字就會根據提到的輸出提供結果。如果數字強,isStrong 函數將傳回 true,如果不是,則傳回 false。

結論

強數是指每個數字的階乘和就是該數本身的數。普通的 java 函數,或使用布林值的函數,或僅將數字作為參數傳遞,就可以識別強數字。此邏輯使用簡單的運算,如取模、除法和加法。

以上是Java 中的強數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn