水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
话不多说,让我们用C语言来求出他:
#include<stdio.h>
int main()
{
int a,b,c,m=100;
loop:
a=m/100;
b=(m-a*100)/10;
c=m%10;
if(a*a*a+b*b*b+c*c*c==m)
printf("%d\n",m);
m++;
if(m<1000)
goto loop;
return 0;
}
-
int a, b, c, m = 100;
:在这一行中,定义了四个整数变量a
、b
、c
和m
,并初始化m
为 100。a
、b
、c
用来分别表示三位数的百位、十位和个位数字。 -
loop:
:这是一个标签(label),用于标识一个代码块,以便后续使用goto
语句跳转到这个标签。 -
a = m / 100;
、b = (m - a * 100) / 10;
、c = m % 10;
:这三行代码分别用来计算三位数m
的百位、十位和个位数字。a
获取百位数字,b
获取十位数字,c
获取个位数字。 -
if (a * a * a + b * b * b + c * c * c == m)
:这是一个条件语句,用于检查当前的m
是否为水仙花数。如果各位数字的立方和等于m
,则条件为真。 -
printf("%d\n", m);
:如果条件为真,即当前的m
是水仙花数,就会使用printf
函数将该水仙花数打印到标准输出。 -
m++;
:这一行将m
的值增加1,以检查下一个三位数。 -
if (m < 1000)
:这是一个条件语句,检查m
是否小于 1000,如果是,则继续执行下一次循环。 -
goto loop;
:如果m
小于 1000,程序会跳转到前面定义的loop
标签,继续执行从标签处开始的代码块。 -
return 0;
:最后,main
函数返回0,表示程序正常结束。
输出结果: