首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言水仙花數:三位數自冪和判斷算法實現

     編輯:C 語言問答

水仙花數定義與算法

三位數 abc,若 a³ + b³ + c³ = abc,則為水仙花數 (阿姆斯特朗數)。

完整代碼


#include 

int main() {
    printf("三位數水仙花數:\n");
    for (int n = 100; n < 1000; n++) {
        int a = n / 100;         // 百位
        int b = (n / 10) % 10;   // 十位
        int c = n % 10;          // 個位
        if (a*a*a + b*b*b + c*c*c == n)
            printf("%d ", n);
    }
    printf("\n");
    return 0;
}

輸出結果

三位數水仙花數:
153 370 371 407 

驗證

  • 153: 1³+5³+3³ = 1+125+27 = 153 ✓
  • 370: 27+343+0 = 370 ✓
  • 371: 27+343+1 = 371 ✓
  • 407: 64+0+343 = 407 ✓

擴展:N 位數阿姆斯特朗數


bool isArmstrong(int n) {
    int original = n, digits = 0, sum = 0;
    while (n > 0) { digits++; n /= 10; }
    n = original;
    while (n > 0) {
        int d = n % 10;
        int p = 1;
        for (int i = 0; i < digits; i++) p *= d;
        sum += p;
        n /= 10;
    }
    return sum == original;
}

數學性質

  • 十進制下只有 88 個阿姆斯特朗數 (含 0-9)
  • 最大為 39 位數:115,132,219,018,763,992,565,095,597,973,971,522,401
  • 三位數只有 4 個,四位數有 3 個 (1634, 8208, 9474)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved