求0-999之间的水仙花数
程序员文章站
2022-05-12 12:28:13
...
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。水仙花数也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,是指一N位数,其各个数位之N次方和等于该数。
既然是求0-999之间的水仙花数,那意思就是求0-999之间的所有1位数、2位数、3位数的水仙花数。
根据定义,1位数的水仙花数每个数位的1次方之和等于它本身。2位数的水仙花数每个数位的平方之和等于它本身。3位数的水仙花数每个数位的3次方之和等于它本身。
那么,我们可以把题理解为判断0-999之间的每一个数字是不是符合水仙花数的定义,若符合,则输出若不符合,则不输出。
假设这个数是三位数 i (1认为是001进行运算 )
那么,它的个位数字就是 i1=i%10 //让这个数与10进行取余运运算
十位数字就是 i2=(i/10)%10 //让这个数先除以10再与10求余运算
百位数字就是 i3=i/100 //让这个数直接与100进行除法运算,因为在C语言中,除法运算时取整
这样在进行判断,符合条件则输出,不符合条件不输出!
据此我们可以写出以下代码!
#include <stdio.h>
int main()
{
int i;
for (i = 0; i < 1000; i++)
{
int i1 = i % 10; //*求个位数字*/
int i2 = (i / 10) % 10; //*求十位数字*/
int i3 = i / 100; //*求百位数字*/
if (i1*i1*i1 + i2*i2*i2 + i3*i3*i3 ==i)
printf("%d\n", i);
}
system("pause");
return 0;
}
这样输出的结果如下图