经典编程题:求水仙花数

2023-04-12 13:53:54 浏览数 (1)

什么是水仙花数?

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


用C语言如何实现?

首先,先把我们的思路大概想好,分为以下几步:

1.我们要求的是0-10w内的水仙花数,那就要用到循环 2.求i这个数字的位数 3.把这个多位数每位的数分解然后各自求三次方然后求和 4.判断

代码语言:javascript复制
#include<stdio.h>
#include<math.h>
int main()
{
	for(i=0;i<100000;i  )
	{
		int n=i;
		int num=1;//num为多位数的位数
		while(n/10)
		{
			num  ;//计算位数
			n=n/10;
		}
		n=i;//重置n,防止死循环
		int sum=0;
		while(n)
		{
			sum=sum pow(n,num);//计算各位数三次方的和
			n=n/10;
		}
		if(sum==i)
		printf("%d ",i);
	}
	return 0;
}

结果如下:

0 1 2 3 4 5 6 7 8 9 153 370 371 407 1634 8208 9474 54748 92727 93084

0 人点赞