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

1.算法分析

将给出的数字拆分成百位,十位和个位,将它们存储到变量中并用这些数求其立方和,若该数的立方和等于这个数,则这个数为水仙花数。

2.算法设计

根据水仙花数是一个三位数,可以设计一个 for 循环,循环变量为 i ,只要 i 大于 100 且小于 999,就一直枚举数字。

for (int i=100; i<1000; i++) {...}

for.png

将 i 对 10 取余,得出 i 在个位上的数字 a 。

将 i 整除以 10 再除以 10 取余 , 得出 i 在十位上的数字 b ;

将 i 整除以 100 ,得出 i 在百位上的数字 c 。

求得 a,b,c 三个数字的立方和是否与 i 相等,如果相等则证明该数为水仙花数。

3.代码实现

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    for(int i=100;i<1000;i++)
    {
        double a,b,c;
        a=i%10;
        b=i/10%10;
        c=i/100;
        if(pow(a,3)+pow(b,3)+pow(c,3)==i)
        {
            cout<<i<<endl;
        }
    }
    return 0;
}

4.扩展资料

四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数

最后修改:2021 年 08 月 21 日
赠人玫瑰,手有余香。您的赞赏是对我最大的支持!