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

C語言實作:找出所有三位數阿姆斯壯數(自戀數/水仙花數)

     編輯:關於C語言

阿姆斯壯數(水仙花數)完整搜尋

阿姆斯壯數(Armstrong Number),又稱自戀數或水仙花數,指一個 n 位數等於其各位數字 n 次方之和。本程式找出所有三位數(100~999)的阿姆斯壯數。

定義與條件

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

程式碼實作

#include <stdio.h>

int main()
{
    int i, a, b, c;

    for(i = 100; i <= 999; i++)
    {
        a = i % 10;        // 個位
        b = i / 10 % 10;   // 十位
        c = i / 100;       // 百位

        if(a*a*a + b*b*b + c*c*c == i)
        {
            printf("%d is Armstrong.\n", i);
        }
    }
    return 0;
}

執行結果

四個三位數阿姆斯壯數:
153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153
370 = 3³ + 7³ + 0³ = 27 + 343 + 0 = 370
371 = 3³ + 7³ + 1³ = 27 + 343 + 1 = 371
407 = 4³ + 0³ + 7³ = 64 + 0 + 343 = 407

執行結果示意

阿姆斯壯數執行結果

延伸:通用 n 位數阿姆斯壯數

bool isArmstrong(int n) {
    int original = n, sum = 0, digits = 0, temp = n;
    while(temp) { digits++; temp /= 10; }
    temp = n;
    while(temp) { sum += pow(temp % 10, digits); temp /= 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