最近在练习C语言,遇到了计算水仙花数的问题,水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153,我把3推广为n,希望能解决这一类的问题
代码:
include<stdio.h>
include<math.h>
int main()
{
for (int i = 0; i <= 100000; i++)
{
int temp = i;
int n = 1;
while(temp/10)//判断n的位数
{
n++;
temp=temp/10;
}
temp = i;
int sum = 0;
while (temp)
{
sum += pow(temp % 10, n);
temp = temp / 10;
}
if (i == sum)
{
printf("%d ", i);
}
}
return 0;
}
该代码计算的不只是水仙花数,要计算水仙花数可以进行简化
希望能帮助到大家