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

C 語言求解水仙花數:三種方法找出 0-999 間的自戀數

     編輯:關於C語言

定義

三位數 abc 滿足 a³+b³+c³ = abc。

方法一:直接分解百十個位

for (int n=100; n<1000; n++) {
    int a=n/100, b=n/10%10, c=n%10;
    if (n == a*a*a + b*b*b + c*c*c) printf("%d ", n);
}

方法二:pow 函數 + 迴圈分解

for (int n=100; n<1000; n++) {
    int sum=0, m=n;
    do { sum += pow(m%10, 3); m/=10; } while (m);
    if (sum==n) printf("%d ", n);
}

方法三:另類分解

for (int n=100; n<1000; n++) {
    int a=n/100, b=(n-a*100)/10, c=n%10;
    if (n == a*a*a + b*b*b + c*c*c) printf("%d ", n);
}

輸出結果

153 370 371 407

效能對比

  • 方法一無庫函數調用,最快。
  • 方法二使用 pow 有浮點轉換開銷。
  • 方法三邏輯等價方法一,風格不同。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved