C语言检查阿姆斯特朗数的程序

要理解这个示例,您应该了解以下 C 编程 主题


一个正整数如果满足其数字的 n 次幂之和等于该数本身,则称该数为(n 阶)阿姆斯特朗数。

abcd... = an + bn + cn + dn + 

对于一个三位数的阿姆斯特朗数,其每个数字的立方和等于该数本身。例如,153 是一个阿姆斯特朗数,因为

153 = 1*1*1 + 5*5*5 + 3*3*3 

检查三位数阿姆斯特朗数

#include <stdio.h>
int main() {
    int num, originalNum, remainder, result = 0;
    printf("Enter a three-digit integer: ");
    scanf("%d", &num);
    originalNum = num;

    while (originalNum != 0) {
       // remainder contains the last digit
        remainder = originalNum % 10;
        
       result += remainder * remainder * remainder;
        
       // removing last digit from the orignal number
       originalNum /= 10;
    }

    if (result == num)
        printf("%d is an Armstrong number.", num);
    else
        printf("%d is not an Armstrong number.", num);

    return 0;
}

输出

Enter a three-digit integer: 371
371 is an Armstrong number.

检查 n 位数阿姆斯特朗数

#include <stdio.h>

int main() {
    unsigned long long int num, originalNum, remainder, n = 0;
    unsigned long long int result = 0;

    printf("Enter an integer: ");
    scanf("%llu", &num);

    originalNum = num;

    // store the number of digits of num in n
    while (originalNum != 0) {
        originalNum /= 10;
        ++n;
    }

    originalNum = num;

    while (originalNum != 0) {
        remainder = originalNum % 10;

        // calculate remainder^n
        unsigned long long int power = 1;
        for (unsigned long long int i = 0; i < n; i++) {
            power *= remainder;
        }

        result += power;
        originalNum /= 10;
    }

    // if num is equal to result, the number is an Armstrong number
    if (result == num)
        printf("%llu is an Armstrong number.\n", num);
    else
        printf("%llu is not an Armstrong number.\n", num);

    return 0;
}

输出

Enter an integer: 1634
1634 is an Armstrong number.

在此程序中,首先计算一个整数的位数,并将其存储在 n 中。然后,在第二个 for 循环的每次迭代中,我们计算每个数字的幂。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战