c语言如何解水仙花数

什么是水仙花数?

水仙花数(Narcissistic number)也叫自恋数、自幂数或阿姆斯壮数,是指一个三位数(或称n位数)等于其各个数位的立方和,例如:$153=1^3+5^3+3^3$。

注意:水仙花数只针对三位数及以上,我们的代码也是基于三位数的水仙花数。

解水仙花数的方法

我们可以通过枚举法来解决找出所有的水仙花数。对于每个三位数n,我们可以识别它的三个数字x、y、z,然后判断其是否为水仙花数,判断方法很简单:$x^3+y^3+z^3=n$。如果判断结果为真,那么n就是一个水仙花数。

代码实现

#include <stdio.h>

int main()

{

int x,y,z,n;

for (n=100;n<=999;n++)

{

x=n/100; //取整百位数

y=n/10%10; //取十位数

z=n%10; //取个位数

if (x*x*x+y*y*y+z*z*z==n)

{

printf("%d,",n);

}

}

return 0;

}

程序解释

首先定义了三个整数变量x、y、z和一个三位数变量n。在for循环中,n从100到999递增,每次循环都会重新计算x、y、z。

注意:这里用到了取余运算(%)和整除运算(/)。其中,%就是取余数,/就是整除的意思。

在if判断中,我们就可以用$x\times x\times x+y\times y\times y+z\times z\times z==n$的方法判断是否为水仙花数。如果是,就使用printf输出。

完整代码

#include <stdio.h>

int main()

{

int x,y,z,n;

for (n=100;n<=999;n++)

{

x=n/100; //取整百位数

y=n/10%10; //取十位数

z=n%10; //取个位数

if (x*x*x+y*y*y+z*z*z==n)

{

printf("%d,",n);

}

}

return 0;

}

总结

通过这个简单的代码实现,我们可以了解到水仙花数的定义以及如何用C语言来实现找出所有的水仙花数。这也为我们之后的学习和工作打下了坚实的基础。

后端开发标签