判断水仙花数的C语言实现及其解析

什么是水仙花数?

在数学领域,水仙花数(也称为自幂数)是指一个n位数(n≥3),它的每个位上的数字的n次方之和等于它本身。例如,对于三位数来说,如果一个数abc(a、b、c分别代表百位、十位和个位)满足 a^3 + b^3 + c^3 = abc,那么这个数就被称为“水仙花数”。其中,最常见的就是三位水仙花数,如153就是一个典型的例子,因为1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153


C语言实现代码与解析

下面是一个用于判断任意位数是否为水仙花数的C语言程序,但在此例中我们将重点放在三位数上:

#include <stdio.h>
#include <math.h> // 引入 pow 函数库
//判断是否为水仙花数(自幂数)
int main() {
    // 遍历1000以内的整数(实际应遍历100至999,这里是演示代码,未做限制)
    for (int i = 0; i < 10000; i++)
    {
        int n = 1; // 初始化位数计数器为1
        int tmp = i; // 创建临时变量tmp存储原始数值
        int sum = 0; // 初始化各位数字立方和为0

        // 计算并更新当前数i的位数
        while (tmp /= 10)
        {
            n++; // 每除以10一次,位数加1
        }

        // 将tmp恢复为原始数值
        tmp = i;

        // 计算每位数字的立方和
        while (tmp)
        {
            // 计算tmp的个位数的n次方(这里实际上是计算立方)
            sum += pow(tmp % 10, n);
            tmp /= 10; // 去掉个位数以便处理下一位
        }

        // 判断原数i是否等于各位数字立方和
        if (i == sum)
        {
            printf("%d ", i); // 输出是水仙花数的整数
        }
    }

    return 0; // 程序正常结束,返回值为0
}
  1. 引入必要的头文件,包括stdio.h以使用输入输出函数,以及math.h以调用求幂函数pow

  2. 使用for循环遍历100到999的所有可能的三位数。

  3. 初始化变量n表示位数计数器,tmp复制i值用于后续操作,sum用于存储各位数字立方和。

  4. 第一个while循环计算tmp(即原始数值i)的位数,并将结果储存在变量n中。

  5. tmp恢复为原始数值,进入第二个while循环,该循环用来逐位计算立方并累加到sum中。

  6. 在第二个循环内部,首先计算tmp的个位数的n次方(此处实际上是立方),然后将其累加到sum上。

  7. 接着,通过tmp /= 10去掉个位数,准备处理下一位。

  8. 循环结束后,比较原始数i与各位数字立方和sum,若相等则输出该数为水仙花数。

  9. 最后,主函数返回0表示程序正常结束。

        通过这段C语言程序,我们可以有效地找出所有三位水仙花数。当然,对于不同位数的自幂数判断,只需调整循环范围和相应逻辑即可。

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

普通young man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值