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

PHPで指定した範囲内の奇数の合計を求めるプログラム

指定された範囲内に存在する奇数の合計を求めるには、以下のようなコードを使用します。

サンプルコード

<?php
function odd_num_sum($val)
{
   $entries = (int)($val + 1) / 2;
   $sum = $entries * $entries;
   return $sum;
}
function num_in_range($low, $high)
{
   return odd_num_sum($high) - odd_num_sum($low - 1);
}
$low = 3;
$high = 23;
echo "The sum of odd natural numbers between the numbers 3 and 23 is ", num_in_range($low, $high);
?>

出力結果

The sum of odd natural numbers between the numbers 3 and 23 is 141.75

コードの解説

このプログラムでは、まず odd_num_sum という関数を定義しています。この関数は、指定した数値までに含まれる奇数の合計を計算するものです。「最初の n 個の奇数の合計は n の 2 乗に等しい」という数学的性質を利用しており、(val + 1) / 2 で奇数の個数を求め、その値を 2 乗することで、ループ処理を使わずに合計値を効率的に算出しています。

次に、num_in_range 関数は、引数として渡された 2 つの数値の間に存在する奇数の合計を求めます。具体的には、「上限値までの奇数の合計」から「下限値の 1 つ前までの奇数の合計」を差し引くことで、目的の範囲内の奇数の合計を導き出します。

関数の外側では、範囲の下限値($low = 3)と上限値($high = 23)を定義し、これらを引数として num_in_range 関数を呼び出しています。最終的な計算結果は、echo 文によって画面(コンソール)に出力されます。

このように、数列の性質を活かした数式ベースのアプローチを採用することで、大きな範囲を扱う場合でも高速に合計を求めることができるのが、このプログラムの大きな特徴です。


  1. 非再帰関数を使って2つの整数の最大公約数(GCD)を求めるCプログラム

    問題与えられた2つの整数について、非再帰関数を用いて最大公約数(GCD:Greatest Common Divisor)を求めます。解決策最大公約数を求める最も一般的な方法は、ユークリッドの互除法です。これは「大きい方の数を小さい方の数で割った余り」と「小さい方の数」の最大公約数が、元の2つの数の最大公約数と等しくなるという性質を利用したものです。この性質を関数として実装することで、繰り返し処理によって効率よくGCDを計算できます。以下では、非再帰的なアプローチで2つの整数の最大公約数を求める手順を説明します。アルゴリズム非再帰関数を使って2つの整数の最大公約数(GCD)を求めるためのアルゴリ

  2. Pythonで最初のN個の奇数の合計を求めるプログラム

    この記事では、数値 n が与えられたときに、最初の n 個の正の奇数の合計を求める Python プログラムを紹介します。例えば、入力が n = 10 の場合、最初の10個の奇数は [1, 3, 5, 7, 9, 11, 13, 15, 17, 19] となり、その合計は 100 になります。解法のポイントこの問題を解くには、以下の手順に従います。重要な性質として、最初の n 個の奇数の合計は常に n の2乗(n²)と等しいということが知られています。したがって、結果を得るには単に n * n を返すだけで済みます。実際に確認してみましょう。1 = 1²1 + 3 = 4 = 2²1 + 3