水仙花数

224 阅读1分钟

介绍

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。

实现原理

“水仙花数”是指满足某一条件的三位数,可以确定整数的取值范围是 100〜999,每一个位上的立方相加等于这个数本身。

实现代码

int main() {
    for (int i = 100; i < 1000; ++i) {
        // 百位(hundred)、十位(ten)、个位(individual)
        int hun, ten, ind;
        hun = i / 100;
        ten = (i - hun * 100) / 10;
        ind = i % 10;
        if (i == hun * hun * hun + ten * ten * ten + ind * ind * ind) {
            printf("%d \t", i);
        }
    }
    return 0;
}

总结

求水仙花数的原理很简单——但是,需要注意正确找出每一位上的数。