求出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;
}
运行结果:
解题思路:
根据题目给出的信息,可以明显的确定水仙花数的范围是100到999之间,可以通过定义变量hud、 ten和ind分别表示这个数的百位、十位以及个位。hud通过i%100可以得到,ten通过(i/10)%10可以得到。而个位需要通过(i%100)%10得到,通过循环语句和if条件语句的嵌套使用就可以得到10000以内的水仙花数了。
上一篇: Android开发中的MVP模式详解
下一篇: android mvp开发模式