求水仙花数的c程序

甜岛和星

在编程领域,水仙花数(Narcissistic number),又称为自恋数、自幂数、阿姆斯特朗数(Armstrong number),它指的是一个n位正整数,其各位数字的n次幂之和等于该数本身。例如:(153 = 1^3 + 5^3 + 3^3)。

编写一个求水仙花数的C程序,可以锻炼编程者的基本编程能力,同时也是对数学和编程结合的一种实践。下面是一个简单的C程序示例,用于找出1000以内的所有水仙花数。

#include <stdio.h>
#include <math.h>

int main() {
    int i, temp, original, sum = 0;
    int hundreds, tens, ones;

    printf("1000以内的水仙花数有:\n");
    for(i = 1; i < 1000; i++) {
        original = i; // 保存原始数值
        sum = 0; // 初始化各位数字的立方和

        // 计算立方和
        while(original != 0) {
            ones = original % 10;
            tens = (original / 10) % 10;
            hundreds = (original / 100) % 10;

            sum += pow(ones, 3) + pow(tens, 3) + pow(hundreds, 3);
            original /= 10;
        }

        // 如果立方和等于原始数值,则是水仙花数
        if(sum == i) {
            printf("%d\n", i);
        }
    }

    return 0;
}

这段程序首先通过一个for循环遍历1到999的所有数字,因为水仙花数至少是三位数。在循环内部,程序使用一个while循环来计算当前数字的每一位数字,并使用pow()函数计算其立方。pow()函数是C标准库中的一个函数,用于计算一个数的幂。

在计算立方和的同时,程序使用取模操作符%来获取当前最低位的数字,然后通过连续的除以10操作来逐步移除最低位,直到数字变为0。每次循环,都将当前位的立方加到sum变量上。

最后,如果计算出的立方和与原始数值相等,那么这个数就是一个水仙花数,程序将其打印出来。

这个程序简单易懂,适合初学者学习和理解循环、条件判断以及数学函数在编程中的应用。通过编写和运行这样的程序,可以加深对C语言基础概念的理解和掌握。

版权声明:本页面内容旨在传播知识,为用户自行发布,若有侵权等问题请及时与本网联系,我们将第一时间处理。E-mail:284563525@qq.com

目录[+]

取消
微信二维码
微信二维码
支付宝二维码