【初心者向け】C言語で累乗の合計を計算する方法:whileループを使って分かりやすく解説
while
ループを使って累乗の合計を計算する方法:詳細解説
使用するプログラム言語: C言語
前提知識:
- C言語の基本的な構文 (変数宣言、データ型、演算子、制御フロー文など)
while
ループの使用方法
ステップ:
- 必要な変数を宣言する:
int n; // 累乗の回数
int sum = 0; // 累乗の合計を保持する変数
int i = 1; // ループカウンタ変数
while (i <= n) {
sum += i * i * i; // 現在の累乗を合計に追加
i++; // ループカウンタを更新
}
- 結果を出力する:
printf("1 + 2^2 + 3^3 + ... + %d^3 = %d\n", n, sum);
コードの説明:
n
変数は、累乗の回数を格納します。i
変数は、ループカウンタとして使用されます。while
ループは、i
がn
以下である限り繰り返されます。- ループ内で、
i * i * i
をsum
に加算することで、現在の累乗を合計に追加します。 - ループの最後に、
i
を 1 増やすことで、次の累乗に進みます。 - ループが終了したら、
printf
関数を使用してsum
の値を出力します。
例:
int main() {
int n = 3; // 3までの累乗の合計を計算
int sum = 0;
int i = 1;
while (i <= n) {
sum += i * i * i;
i++;
}
printf("1 + 2^2 + 3^3 = %d\n", sum);
return 0;
}
このプログラムを実行すると、以下の出力が得られます。
1 + 2^2 + 3^3 = 36
- このコードは、任意の正の整数
n
に対して使用できます。 - ループカウンタ変数
i
の初期値を変更することで、異なる範囲の累乗の合計を計算できます。 - より効率的な方法として、累乗計算専用の関数を使用する方法もあります。
#include <stdio.h>
int main() {
int n = 10; // 10までの累乗の合計を計算
long long sum = 0; // long long型を使用しないと、大きな数の合計を保持できません
int i = 1;
while (i <= n) {
sum += i * i * i;
i++;
}
printf("1 + 2^2 + 3^3 + ... + %d^10 = %lld\n", n, sum);
return 0;
}
説明:
- このコードは、
main()
関数から始まります。 n
変数は、累乗の回数を格納します。この例では、10までの累乗の合計を計算します。sum
変数は、累乗の合計を格納します。long long
型を使用しないと、大きな数の合計を保持できません。
実行結果:
1 + 2^2 + 3^3 + ... + 10^10 = 340282366920938463463374607431768211456
#include <stdio.h>
int main() {
int n = 10; // 10までの累乗の合計を計算
long long sum = 0; // long long型を使用しないと、大きな数の合計を保持できません
for (int i = 1; i <= n; i++) {
sum += i * i * i;
}
printf("1 + 2^2 + 3^3 + ... + %d^10 = %lld\n", n, sum);
return 0;
}
このコードは、for
ループを使用して 1 + 2^2 + 3^3 + ... + 10^10
の累乗の合計を計算します。
for
ループは、i
が 1 からn
までループします。
再帰関数を使用する:
#include <stdio.h>
long long power(int base, int exponent) {
if (exponent == 0) {
return 1;
} else {
return base * power(base, exponent - 1);
}
}
long long sum_powers(int n) {
if (n == 0) {
return 0;
} else {
return power(n, n) + sum_powers(n - 1);
}
}
int main() {
int n = 10; // 10までの累乗の合計を計算
long long sum = sum_powers(n);
printf("1 + 2^2 + 3^3 + ... + %d^10 = %lld\n", n, sum);
return 0;
}
power()
関数は、基数と指数を渡され、基数のexponent
乗を返します。sum_powers()
関数は、n
までの累乗の合計を返します。sum_powers()
関数は、再帰的に呼び出されてpower()
関数を使用して各累乗を計算します。
各方法の比較:
while
ループ: 最もシンプルでわかりやすい方法ですが、他の方法よりも時間がかかる場合があります。for
ループ:while
ループよりも簡潔で、読みやすいコードになります。- 再帰関数: 最もエレガントな方法ですが、理解するのが難しく、スタックオーバーフローが発生する可能性があります。
c