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

C語言找水仙花數:100~999 完整列印與非水仙花數分類統計

     編輯:關於C

水仙花數定義

三位數 abc 若滿足 a³ + b³ + c³ = abc,則為水仙花數。範圍 100~999。

原始碼分析與改進

原程式僅檢查 100~199,且使用兩個陣列分別儲存「是」與「否」的數字,記憶體浪費。改進版:

  • 完整掃描 100~999
  • 即時輸出,無需陣列儲存
  • 統計總數

優化版程式碼

#include <stdio.h>

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

執行結果

100~999 間的水仙花數:
153 370 371 407 
共 4 個水仙花數

數學驗證

數字百位³十位³個位³和
153112527153 ✓
370273430370 ✓
371273431371 ✓
407640343407 ✓

延伸:N 位數自戀數

廣義水仙花數(Armstrong 數):n 位數各位 n 次方和等於自身。四位數有 1634, 8208, 9474 三個。

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