水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
将给出的数字拆分成百位,十位和个位,将它们存储到变量中并用这些数求其立方和,若该数的立方和等于这个数,则这个数为水仙花数。
根据水仙花数是一个三位数,可以设计一个 for 循环,循环变量为 i ,只要 i 大于 100 且小于 999,就一直枚举数字。
for (int i=100; i<1000; i++) {...}
将 i 对 10 取余,得出 i 在个位上的数字 a 。
将 i 整除以 10 再除以 10 取余 , 得出 i 在十位上的数字 b ;
将 i 整除以 100 ,得出 i 在百位上的数字 c 。
求得 a,b,c 三个数字的立方和是否与 i 相等,如果相等则证明该数为水仙花数。
#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;
}
四位自幂数:四叶玫瑰数 五位自幂数:五角星数 六位自幂数:六合数 七位自幂数:北斗七星数 八位自幂数:八仙数 九位自幂数:九九重阳数 十位自幂数:十全十美数