首页 > 编程笔记

C语言水仙花数

C语言中的水仙花数,是指一个 n 位数,它的每个位上的数字的n次方之和等于它本身。比如,153就是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153,这样的数字在数学上称为“自幂数”。

水仙花数是一类数学上的现象,有着美丽的形式和神奇的性质,被广泛用于数学科普和编程练习。在 C语言中,可以通过循环和条件判断等基本语句,来实现水仙花数的求解。

下面是一个简单的 C语言程序,用于求解三位数中的水仙花数:
#include <stdio.h>

int main()
{
    int num, digit, sum;

    printf("Three-digit narcissistic numbers:\n");

    for(num = 100; num <= 999; num++)
    {
        digit = num % 10;           // 获取个位数字
        sum = digit * digit * digit; // 计算个位数字的立方

        digit = num / 10 % 10;           // 获取十位数字
        sum += digit * digit * digit;    // 计算十位数字的立方

        digit = num / 100;           // 获取百位数字
        sum += digit * digit * digit; // 计算百位数字的立方

        if(num == sum)
            printf("%d\n", num);     // 输出水仙花数
    }

    return 0;
}
运行上述程序,输出结果如下:

Three-digit narcissistic numbers:
153
370
371
407

代码中,首先使用一个 for 循环,从 100 开始遍历到 999,对于每个三位数,将其个位、十位、百位上的数字分别提取出来,然后将它们的立方相加。如果最后的结果等于原数,则说明这个数字是水仙花数,将其输出即可。

这样的求解思路简单直观,代码易于理解和修改,适合初学者进行学习和练习。

推荐阅读