C程序 查找1-1000之间阿姆斯特朗数字

  • Post category:C

C程序 查找1-1000之间阿姆斯特朗数字 使用攻略

这份攻略将为你提供一份完整的教程,帮助你编写一段从1到1000之间查找阿姆斯特朗数字的C程序。

什么是阿姆斯特朗数字?

阿姆斯特朗数字,又叫自恋数或者自幂数,是指一个n位的十进制数,其各位数字的n次方之和等于该数本身。

例如:153是一个三位数,其各位数字的三次方之和为1^3 + 5^3 + 3^3 = 153,则153是一个阿姆斯特朗数字。

算法思路

我们可以通过遍历1到1000之间的所有数字,计算其各位数字的n次方之和是否等于该数本身,如果相等则该数字为阿姆斯特朗数字。

程序设计

接下来,我们将列出完整的C程序,实现查找1到1000之间的阿姆斯特朗数字。

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

int main() {
    int n, temp, sum, i;

    printf("1-1000之间的阿姆斯特朗数为:\n");

    for (i = 1; i <= 1000; i++) {
        n = 0;
        temp = i;
        sum = 0;

        while (temp > 0) {
            temp /= 10;
            ++n;
        }

        temp = i;

        while (temp > 0) {
            sum += pow(temp % 10, n);
            temp /= 10;
        }

        if (i == sum) {
            printf("%d\n", i);
        }
    }

    return 0;
}

运行该程序后,将会输出1到1000之间的所有阿姆斯特朗数字。下面是程序输出的前几个数字:

1
2
3
4
5
6
7
8
9
153
370
371
407

示例说明

示例说明一

假设我们需要查找1到100之间的所有阿姆斯特朗数字,我们只需要修改程序中for循环的范围,将1000改为100即可。

修改完成后的程序如下:

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

int main() {
    int n, temp, sum, i;

    printf("1-100之间的阿姆斯特朗数为:\n");

    for (i = 1; i <= 100; i++) {
        n = 0;
        temp = i;
        sum = 0;

        while (temp > 0) {
            temp /= 10;
            ++n;
        }

        temp = i;

        while (temp > 0) {
            sum += pow(temp % 10, n);
            temp /= 10;
        }

        if (i == sum) {
            printf("%d\n", i);
        }
    }

    return 0;
}

运行该程序后,将会输出1到100之间的所有阿姆斯特朗数字。下面是程序输出的结果:

1
2
3
4
5
6
7
8
9

示例说明二

假设我们需要查找1到10000之间的所有阿姆斯特朗数字,我们只需要修改程序中for循环的范围,将1000改为10000即可。

修改完成后的程序如下:

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

int main() {
    int n, temp, sum, i;

    printf("1-10000之间的阿姆斯特朗数为:\n");

    for (i = 1; i <= 10000; i++) {
        n = 0;
        temp = i;
        sum = 0;

        while (temp > 0) {
            temp /= 10;
            ++n;
        }

        temp = i;

        while (temp > 0) {
            sum += pow(temp % 10, n);
            temp /= 10;
        }

        if (i == sum) {
            printf("%d\n", i);
        }
    }

    return 0;
}

运行该程序后,将会输出1到10000之间的所有阿姆斯特朗数字。由于阿姆斯特朗数字的个数很少,因此我们只需要查看程序输出的结果即可判断是否存在阿姆斯特朗数字。