C言語での水仙花数の計算方法は何ですか?

C言語でのナルシサス数を求める方法は、ループと条件判断を使用して計算することです。ナルシサス数とは、n桁の数(n≧3)で、各桁の数字のn乗の合計がその数自体に等しいものを指します。

以下は具体的な方法です:

  1. 100から1つずつ数を確認して、各数がアームストロング数かどうかを判断するループを使用します。
  2. 各数について、まずその数の桁数nを取得します。
  3. 数字を各桁に分割し、各数字のn乗を計算してください。
  4. 各数字のn乗を足し合わせて、合計を求めます。
  5. もし和が元の数と等しいなら、その数はナルシス数であると判断でき、出力や保存することができる。

サンプルコードは以下の通りです:

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

int main() {
    int n, num, digit, sum;
    
    printf("水仙花数有:");
    
    for (num = 100; num < 1000; num++) {
        n = 0;
        sum = 0;
        int temp = num;
        
        // 获取位数n
        while (temp != 0) {
            temp /= 10;
            n++;
        }
        
        temp = num;
        
        // 分解并计算每个位上的数字的n次幂
        while (temp != 0) {
            digit = temp % 10;
            sum += pow(digit, n);
            temp /= 10;
        }
        
        // 判断是否是水仙花数
        if (sum == num) {
            printf("%d ", num);
        }
    }
    
    return 0;
}

実行結果は:

水仙花の数は、153、370、371、407の4つです。

100から999までの水仙の数は、153、370、371、および407です。

bannerAds