使用Java解決 - 打印出所有的水仙花數

前言

水仙花數(Narcissistic number)也被稱為超完全數字不變數、自戀數、自冪數,是指一個 n 位數 (n≥3),它的每個位上的數字的 n 次冪之和等於它本身。對於三位數而言,如果一個三位數的各位數字的立方和等於這個數本身,那麼這個數就是水仙花數。

例如,153 是一個水仙花數,因為 \(1^3 + 5^3 + 3^3 = 153\)。

本文將通過 Java 語言來實現一個簡單的程序,用於找出並打印所有三位數中的水仙花數。

實現思路

  1. 確定範圍:由於水仙花數是三位數,因此我們的查找範圍是 100 到 999。
  2. 分解數字:對於每一個三位數,我們需要將其分解為百位、十位和個位。
  3. 計算立方和:計算這三個位置上數字的立方和。
  4. 比較結果:如果計算出的立方和等於原數,則該數為水仙花數。
  5. 輸出結果:將找到的所有水仙花數打印出來。

Java代碼實現

public class NarcissisticNumber {
    public static void main(String[] args) {
        // 遍歷100到999之間的所有數字
        for (int num = 100; num <= 999; num++) {
            if (isNarcissistic(num)) {
                System.out.println(num);
            }
        }
    }

    /**
     * 判斷一個數是否為水仙花數
     * @param num 待判斷的數
     * @return 如果是水仙花數返回true,否則返回false
     */
    private static boolean isNarcissistic(int num) {
        int originalNum = num;
        int sum = 0;

        // 分解數字並計算立方和
        while (num > 0) {
            int digit = num % 10;
            sum += Math.pow(digit, 3);
            num /= 10;
        }

        // 判斷立方和是否等於原數
        return sum == originalNum;
    }
}

運行結果

運行上述代碼後,程序將輸出所有的三位數水仙花數:

153
370
371
407


下面是一個用Java編寫的示例代碼,用於找出並打印所有的水仙花數(即三位數中,其各個位上的數字立方和等於該數本身的數)。

public class NarcissisticNumber {
    public static void main(String[] args) {
        // 遍歷所有三位數,從100到999
        for (int number = 100; number <= 999; number++) {
            if (isNarcissistic(number)) {
                System.out.println(number);
            }
        }
    }

    /**
     * 判斷一個數是否是水仙花數
     * @param number 要判斷的數
     * @return 如果是水仙花數返回true,否則返回false
     */
    public static boolean isNarcissistic(int number) {
        int originalNumber = number;
        int sum = 0;

        // 提取每一位數字並計算立方和
        while (number > 0) {
            int digit = number % 10;
            sum += Math.pow(digit, 3);
            number /= 10;
        }

        // 判斷立方和是否等於原數
        return sum == originalNumber;
    }
}

代碼解釋:

  1. 主方法 main:
  • 使用一個 for 循環遍歷從100到999的所有三位數。
  • 對於每個數,調用 isNarcissistic 方法判斷它是否是水仙花數。
  • 如果是水仙花數,則打印該數。
  1. 輔助方法 isNarcissistic:
  • 接受一個整數 number 作為參數。
  • 保存原始數 originalNumber,以便後續比較。
  • 使用 while 循環提取每一位數字,並計算其立方和。
  • 最後,判斷立方和是否等於原始數,如果是則返回 true,否則返回 false

運行結果:

運行上述代碼後,輸出將是所有的水仙花數:

153
370
371
407

這些數都是三位數,並且它們各自的各位數字的立方和等於該數本身。希望這個示例對你有幫助!如果有任何問題或需要進一步的解釋,請隨時告訴我。當然可以!下面是一個詳細的Java程序,用於找出並打印所有的水仙花數。

什麼是水仙花數?

水仙花數(Narcissistic number)是指一個三位數,其各位數字的立方和等於該數本身。例如,153 是一個水仙花數,因為: \[ 153 = 1^3 + 5^3 + 3^3 \]

Java代碼實現

public class NarcissisticNumber {
    public static void main(String[] args) {
        // 遍歷所有三位數,從100到999
        for (int num = 100; num <= 999; num++) {
            if (isNarcissistic(num)) {
                System.out.println(num);
            }
        }
    }

    // 判斷一個數是否是水仙花數
    public static boolean isNarcissistic(int num) {
        int originalNum = num;
        int sum = 0;

        // 提取每一位數字並計算立方和
        while (num > 0) {
            int digit = num % 10; // 取出個位數
            sum += Math.pow(digit, 3); // 計算立方並累加
            num /= 10; // 去掉個位數
        }

        // 判斷立方和是否等於原數
        return sum == originalNum;
    }
}

代碼解釋

【詳解】使用java解決-打印出所有的水仙花數,所謂水仙花數是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個水仙花數,因為153=1的三次方+5的三次方+3的三次方。_Java

  1. 主方法 main:
  • 使用一個 for 循環遍歷所有三位數,從100到999。
  • 對於每一個數,調用 isNarcissistic 方法判斷它是否是水仙花數。
  • 如果是水仙花數,則打印該數。
  1. 輔助方法 isNarcissistic:
  • 接受一個整數 num 作為參數。
  • 將原數保存在 originalNum 中,以便後續比較。
  • 初始化 sum 為0,用於存儲各位數字的立方和。
  • 使用 while 循環提取每一位數字:
  • digit = num % 10:取出當前數的個位數。
  • sum += Math.pow(digit, 3):計算該位數字的立方並累加到 sum
  • num /= 10:去掉當前數的個位數。
  • 最後,判斷 sum 是否等於 originalNum,如果相等則返回 true,否則返回 false

運行結果

【詳解】使用java解決-打印出所有的水仙花數,所謂水仙花數是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個水仙花數,因為153=1的三次方+5的三次方+3的三次方。_Math_02

運行上述程序,輸出將是所有三位數中的水仙花數:

153
370
371
407

這些數都是滿足條件的水仙花數。希望這個解釋對你有幫助!如果有任何問題或需要進一步的説明,請隨時告訴我。