题目

找出 100~999 之间的水仙花数

思路

本题在 100~999 中找水仙花数:各位数字立方和等于它本身。

对每个三位数,用 /100/10%10%10 取出百、十、个位 a,b,c,判断 a³+b³+c³ 是否等于原数,相等则输出。

解题分析

三位数枚举 100~999,拆百十个位算立方和。剪枝:若只判断单个数,直接算;若找全部,暴力扫描范围即可。

完整程序

#include <stdio.h>

int main(void)
{
    for (int n = 100; n <= 999; 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", n);
        }
    }
    return 0;
}

运行示例

程序不需要从键盘读入,直接运行。输出如下:

153
370
371
407