C言語で水仙花数を処理するのはどうすればいいですか

水仙花数は、各桁の数字のn乗和がその数自身と等しくなるn桁の自然数のこと。例えば、153は1の3乗 + 5の3乗 + 3の3乗 = 153と水仙花数になる。

ループと条件判断を利用し、各数値が水仙花数であるかどうか判定することで、C言語の水仙花数問題を解決できます。以下にその解決策を示します。

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

int main() {
    int num, originalNum, remainder, n = 0, result = 0;
    
    printf("输入一个正整数:");
    scanf("%d", &num);
    
    originalNum = num;
    
    // 计算输入数字的位数
    while (originalNum != 0) {
        originalNum /= 10;
        ++n;
    }
    
    originalNum = num;
    
    // 检查是否为水仙花数
    while (originalNum != 0) {
        remainder = originalNum % 10;
        result += pow(remainder, n);
        originalNum /= 10;
    }
    
    if (result == num)
        printf("%d 是水仙花数。\n", num);
    else
        printf("%d 不是水仙花数。\n", num);
    
    return 0;
}

このコードでは、最初にループで入力された数字の桁数を計算しています。次に、ループと剰余演算子を使用して、順番に数字の n 乗の和を計算しています。最後に、条件判断によって結果が元の入力数字と同じかどうかを判断し、水仙花数かどうかを判定しています。

bannerAds