目录
水仙花数概念
首先我们要引入水仙花数的概念:水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。(此段文字摘抄于百度百科)
代码实现部分
由于水仙花数的特性,我们只能从100开始。先定义一个a,从100开始;再定义g:表示个位。s:表示十位。b:表示百位。z:表示个十百三个位的立方的总和(最终,总和z要与我们的a进行比较)
int a = 100;//从100开始
int g, s, b, z;//个位 十位 百位 总和
接着,我们可以通过for循环来从100开始依次查找到999。如果z=a那么这个数就是水仙花数。
for (a = 100; a < 1000; a++)
{
g=a % 10;
s=(a / 10)%10;
b = (a / 100);
z = g*g*g + s*s*s + b*b*b;
if (z == a)
{
printf("%d是水仙花数\n", a);
}
}
代码上述全部整合在一起,如下图。
//打印100-999之间的水仙花数
int main()
{
int a = 100;
int g, s, b, z;//个位十位百位总和
for (a = 100; a < 1000; a++)
{
g=a % 10;
s=(a / 10)%10;
b = (a / 100);
z = g*g*g + s*s*s + b*b*b;
if (z == a)
{
printf("%d是水仙花数\n", a);
}
}
}
上述结果如下图