C言語で指定した偶数までの偶数の平均を求める方法(ループ・数式の2通り)
指定した偶数までの偶数の平均を求めるには、その数までに含まれるすべての偶数を合計し、偶数の個数を数えたうえで、合計を個数で割ります。
例
たとえば、10までの偶数の平均は6になります。
2 + 4 + 6 + 8 + 10 = 30 → 30 ÷ 5 = 6
偶数 n までの偶数の平均を求める方法には、主に次の2つがあります。
- ループを使う方法
- 数式を使う方法
ループを使って n までの偶数の平均を求めるプログラム
この方法では、1から n まで順番に走査しながら偶数だけを合計し、同時に偶数の個数をカウントします。最後に合計値を個数で割ることで平均が求まります。
n までの偶数の平均を計算するC言語のプログラムは以下のとおりです。
サンプルコード
#include <stdio.h>
int main() {
int n = 14, count = 0;
float sum = 0;
for (int i = 1; i <= n; i++) {
if(i%2 == 0) {
sum = sum + i;
count++;
}
}
float average = sum/count;
printf("The average of even numbers till %d is %f", n, average);
return 0;
}
実行結果
The average of even numbers till 14 is 8.000000
数式を使って n までの偶数の平均を求めるプログラム
ループを使わず、数学的な公式 (n + 2) / 2 を使えば、平均を即座に計算できます。ここで n は問題の条件となる偶数です。
この公式は次のように導出できます。まず、2 + 4 + … + n の合計は n(n + 2) / 4 となり、偶数の個数は n / 2 です。したがって、平均 = {n(n + 2) / 4} ÷ (n / 2) = (n + 2) / 2 となります。
サンプルコード
#include <stdio.h>
int main() {
int n = 14;
float average = (n + 2) / 2.0;
printf("The average of even numbers till %d is %f", n, average);
return 0;
}
実行結果
The average of even numbers till 14 is 8.000000
まとめ
ループを使う方法は処理の流れが直感的で分かりやすい一方、時間計算量は O(n) かかります。数式を使う方法は計算量 O(1) で高速であり、大きな n に対しても効率的です。用途に応じて使い分けるとよいでしょう。
-
【C言語】ある整数が2つの素数の和で表せるかどうかを判定するプログラム
問題概要 与えられた正の整数 N が、2つの素数の和として表現できるかどうかを判定するプログラムを、C言語で作成します。 例えば 20 は「3 + 17」や「13 + 7」というように、複数の素数の組み合わせで表すことができます。一方で、11 のように2つの素数の和として表せない数も存在します。 考え方 まず、具体例を使って考えてみましょう。 20 = 3 + 17(どちらも素数) 20 = 13 + 7(どちらも素数) このように、ある数を2つの素数の和で表せるか調べるには、「小さい方の数 i」を 2 から順に増やしながら、「i と (N − i) がどちらも素数になる組み合わせが存在す
-
C言語で指定した数値の掛け算九九表を出力する方法
プログラムの概要このプログラムは、ユーザーが入力した任意の数値に対して、その掛け算九九表(乗算表)を出力するものです。C言語の基礎的な入出力処理と for ループの使い方を学ぶのに最適なサンプルです。アルゴリズム1. 九九表を作成したい数値を、ユーザーから入力として受け取ります。2. ループ変数 i の初期値を 1 に設定し、入力された数値との積を計算します。3. i の値を 1 ずつ増加させながら掛け算を繰り返し、i が 12 以下である間、計算結果を出力し続けます。サンプルコード/* 指定された数値の掛け算九九表を出力するプログラム */ #include <stdio.h>