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

C語言尋找水仙花數:三位數自冪和經典演算法

     編輯:關於C語言

什麼是水仙花數?

三位數 abc 若滿足 a³ + b³ + c³ = abc,即為水仙花數(Narcissistic Number)。已知共有四個:153、370、371、407。

完整程式碼

#include 
#include 
#include 

int main() {
    int a, b, c;
    for (int i = 100; i < 1000; i++) {
        a = i % 10;         // 個位
        b = i / 100;        // 百位
        c = (i - b * 100) / 10;  // 十位
        if (pow(b, 3) + pow(c, 3) + pow(a, 3) == i) {
            printf("%d ", i);
        }
    }
    system("pause");
    return 0;
}

關鍵點解析

  1. 位數拆解:利用除 10 餘 10 取得個、十、百位。
  2. pow() 函式:math.h 提供浮點冪運算,回傳 double,比較時隱性轉型為 int。亦可改用整數乘法 a*a*a 避免浮點誤差。
  3. 迴圈範圍:100 ~ 999 涵蓋所有三位數。

優化版(整數運算)

if (b*b*b + c*c*c + a*a*a == i)  // 更快、無浮點誤差

延伸:N 位數水仙花數

若要泛化至 N 位數,需動態計算位數與冪次,可結合 log10 或字串長度實作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved