Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

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 に対しても効率的です。用途に応じて使い分けるとよいでしょう。

  1. 【C言語】ある整数が2つの素数の和で表せるかどうかを判定するプログラム

    問題概要 与えられた正の整数 N が、2つの素数の和として表現できるかどうかを判定するプログラムを、C言語で作成します。 例えば 20 は「3 + 17」や「13 + 7」というように、複数の素数の組み合わせで表すことができます。一方で、11 のように2つの素数の和として表せない数も存在します。 考え方 まず、具体例を使って考えてみましょう。 20 = 3 + 17(どちらも素数) 20 = 13 + 7(どちらも素数) このように、ある数を2つの素数の和で表せるか調べるには、「小さい方の数 i」を 2 から順に増やしながら、「i と (N − i) がどちらも素数になる組み合わせが存在す

  2. C言語で指定した数値の掛け算九九表を出力する方法

    プログラムの概要このプログラムは、ユーザーが入力した任意の数値に対して、その掛け算九九表(乗算表)を出力するものです。C言語の基礎的な入出力処理と for ループの使い方を学ぶのに最適なサンプルです。アルゴリズム1. 九九表を作成したい数値を、ユーザーから入力として受け取ります。2. ループ変数 i の初期値を 1 に設定し、入力された数値との積を計算します。3. i の値を 1 ずつ増加させながら掛け算を繰り返し、i が 12 以下である間、計算結果を出力し続けます。サンプルコード/* 指定された数値の掛け算九九表を出力するプログラム */ #include <stdio.h>