C言語での水仙花数の計算方法は何ですか?
C言語でのナルシサス数を求める方法は、ループと条件判断を使用して計算することです。ナルシサス数とは、n桁の数(n≧3)で、各桁の数字のn乗の合計がその数自体に等しいものを指します。
以下は具体的な方法です:
- 100から1つずつ数を確認して、各数がアームストロング数かどうかを判断するループを使用します。
- 各数について、まずその数の桁数nを取得します。
- 数字を各桁に分割し、各数字のn乗を計算してください。
- 各数字のn乗を足し合わせて、合計を求めます。
- もし和が元の数と等しいなら、その数はナルシス数であると判断でき、出力や保存することができる。
サンプルコードは以下の通りです:
#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です。