何为水仙花数?
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153(重点)。
那么如何用代码实现找到水仙花数呢?
(1)首先需要将各个数分离那么就想到取模;
(2)再用整数除法把以取模的最后一位去掉;
(3)依次循环累加即可~
代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
int a = 0, i = 0, m = 1, n = 0, c = 0;
for (c = 1; c <= 100000; c++)
{
i = c;
a = 0;
while (i)
{
n = i % 10;
m = i / 10;
i = m;
a = pow(n, 3) + a;//pow函数为指数函数包含于math.h如pow(n,3)就表示为n的三次方
}
if (a == c)
printf("%d ", a);
}
return 0;
}
当i==0时结束while循环。
此取1~100000中水仙花数结果为: