C 言語でアームストロング数を見つける

CBeginner
オンラインで実践に進む

はじめに

この実験では、アームストロング数について学び、C 言語でプログラムを作成して、ある数がアームストロング数であるかどうかを検証します。アームストロング数とは、その桁数の各桁をその桁数のべき乗にしたものの和に等しい数です。

たとえば、

153 はアームストロング数です。なぜなら、153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 です。 371 はアームストロング数です。なぜなら、371 = 3^3 + 7^3 + 1^3 = 27 + 343 + 1 です。

新しい C ファイルを作成する

まず、~/project/ ディレクトリに新しい C ファイルを作成する必要があります。このファイルの名前を main.c としましょう。

touch ~/project/main.c

1 から 500 までのアームストロング数を見つける

1 から 500 までのアームストロング数を見つけるための C 言語のプログラムを書きましょう。

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

int main() {
    printf("\n1 から 500 までのアームストロング数は:\n");

    for (int i = 1; i <= 500; i++) {
        int t = i, sum = 0;
        while (t!= 0) {
            int digit = t % 10;
            sum += pow(digit, 3);
            t /= 10;
        }
        if (sum == i) {
            printf("%d ", i);
        }
    }

    return 0;
}

数がアームストロング数であるかどうかを確認する

次に、数がアームストロング数であるかどうかを確認するための C 言語のプログラムを書きましょう。

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

int main() {
    int n, sum = 0;
    printf("Enter a number: ");
    scanf("%d", &n);

    int temp = n;
    while (temp!= 0) {
        int digit = temp % 10;
        sum += pow(digit, 3);
        temp /= 10;
    }

    if (sum == n) {
        printf("%d is an Armstrong number.\n", n);
    } else {
        printf("%d is not an Armstrong number.\n", n);
    }

    return 0;
}

すべてをまとめる

main.c ファイルに両方のプログラムをまとめましょう。

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

int main() {
    // 1 から 500 までのアームストロング数
    printf("1 から 500 までのアームストロング数は:\n");

    for (int i = 1; i <= 500; i++) {
        int t = i, sum = 0;
        while (t!= 0) {
            int digit = t % 10;
            sum += pow(digit, 3);
            t /= 10;
        }
        if (sum == i) {
            printf("%d ", i);
        }
    }

    printf("\n");

    // 数がアームストロング数であるかどうかを確認する
    int n, sum = 0;
    printf("Enter a number: ");
    scanf("%d", &n);

    int temp = n;
    while (temp!= 0) {
        int digit = temp % 10;
        sum += pow(digit, 3);
        temp /= 10;
    }

    if (sum == n) {
        printf("%d is an Armstrong number.\n", n);
    } else {
        printf("%d is not an Armstrong number.\n", n);
    }

    return 0;
}

まとめ

この実験では、アームストロング数について学び、与えられた範囲内でそれらを見つける方法と、数がアームストロング数であるかどうかを確認する方法を学びました。この実験が楽しかったことと、C 言語のプログラミングについてもっと学ぶのに役立ったことを願っています。