欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

求出0~999之间的所有“水仙花数”并输出。

程序员文章站 2022-03-09 16:16:25
...

“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。 求出0~999之间的所有“水仙花数”并输出。
/*
在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。
例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数:
153 = 1^3 + 5^3 + 3^3。
370 = 3^3 + 7^3 + 0^3。
371 = 3^3 + 7^3 + 1^3。
407 = 4^3 + 0^3 + 7^3。
*/

#include<stdio.h>
#include<stdlib.h>

int main(){
	int hud = 0;//表示百位
	int ten = 0;//表示十位
	int ind = 0;//表示个位
	for (int num = 100; num < 999; num++) {
		hud = num / 100;//取百位数
		ten = (num / 10) % 10;//取十位数
		ind = num % 100 % 10;//取个位数
		if (num == (hud * hud * hud) + (ten * ten * ten) + (ind * ind * ind)) {
			printf("%d是水仙花数\n", num);
		}
	}
    system("pause");
    return 0;
}

运行结果:

求出0~999之间的所有“水仙花数”并输出。
解题思路:
根据题目给出的信息,可以明显的确定水仙花数的范围是100到999之间,可以通过定义变量hud、 ten和ind分别表示这个数的百位、十位以及个位。hud通过i%100可以得到,ten通过(i/10)%10可以得到。而个位需要通过(i%100)%10得到,通过循环语句和if条件语句的嵌套使用就可以得到10000以内的水仙花数了。

相关标签: 水仙花数