PHPで最初のn個の偶数の平均を求めるプログラム
はじめに
最初のn個の偶数(2、4、6、8、…、2n)の平均は、実はとてもシンプルな式で表すことができます。偶数の合計は 2 + 4 + … + 2n = n(n + 1) となるため、これを個数 n で割ると、平均は必ず n + 1 になります。
この数学的性質を活かせば、ループで合計を計算する必要すらなく、定数時間 O(1) で答えを導き出せます。以下がそのPHPコードです。
サンプルコード
<?php
function even_nums_avg($val)
{
return $val + 1;
}
$val = 11;
print_r("最初のn個の偶数の平均は ");
echo(even_nums_avg($val));
?>
出力結果
最初のn個の偶数の平均は 12
コードの解説
even_nums_avg という名前の関数を定義し、引数として受け取った値に対して「n + 1」を返します。ここでは変数 $val に 11 を代入し、その値を引数として関数を呼び出しています。その結果、最初の11個の偶数(2、4、6、…、22)の平均である「12」がコンソールに出力されます。
ポイントは、この関数が内部で合計や個数を逐次計算していないことです。「最初のn個の偶数の平均は常に n + 1 になる」という定理を直接利用することで、非常に効率的な実装を実現しています。
参考:ループで実際に計算する方法
数式による短縮ではなく、偶数を順番に足し合わせて平均を求めたい場合は、以下のようにループ処理でも実装できます。
<?php
function even_nums_avg_loop($val)
{
$sum = 0;
for ($i = 1; $i <= $val; $i++) {
$sum += 2 * $i; // 偶数を順に加算
}
return $sum / $val;
}
echo even_nums_avg_loop(11); // 12 と出力される
?>
どちらの方法でも同じ結果が得られますが、扱う n が大きい場合は、数式を利用した前者の方がパフォーマンス面で有利です。用途に応じて使い分けるとよいでしょう。
-
奇数の自然数の立方の合計を求めるPHPプログラム
はじめに 本記事では、PHPを使って奇数の自然数の立方(3乗)の合計を求めるプログラムを紹介します。1、3、5、7…と続く奇数それぞれを3乗し、その総和を計算する方法を、サンプルコードとともにわかりやすく解説します。 サンプルコード <?php function sum_of_cubes_odd($limit) { $init_sum = 0; for ($i = 1; $i <= $limit; $i++) { $odd = 2 * $i - 1; // i番目の奇数 $init_sum += $odd * $odd * $odd
-
Pythonで最初のn個の奇数の合計を求めるプログラム
数値 n が与えられたとき、最初の n 個の正の奇数の合計を求めることを考えます。たとえば、入力が 7 の場合、出力は 49 になります。これは [1 + 3 + 5 + 7 + 9 + 11 + 13] = 49 となるためです。解決の手順この問題は、以下のステップに従って解くことができます。n が 0 と等しい場合は、0 を返します。変数を初期化します。sum := 1、count := 0、temp := 1count < n - 1 の間、次の処理を繰り返します。temp := temp + 2(次の奇数を生成)sum := sum + temp(合計に加算)count := c