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

【PHP】最初のn個の自然数の3乗の和(立方和)を求める方法

本記事では、PHPを使って最初のn個の自然数の3乗の和(立方和)を求めるプログラムを解説します。まずは基本的なループ処理による実装例から見ていきましょう。

サンプルコード

<?php
function sum_of_cubes($val)
{
$init_sum = 0;
for ($x = 1; $x <= $val; $x++)
$init_sum += $x * $x * $x;
return $init_sum;
}
print_r("The sum of cubes of first 8 natural numbers is ");
echo sum_of_cubes(8);
?>

実行結果

The sum of cubes of first 8 natural numbers is 1296

コードの解説

このコードでは、まず「sum_of_cubes」という名前の関数を定義し、合計値を格納する変数を0で初期化しています。次にforループを使って、1から引数で渡された値までの各自然数について、その数を3回掛け合わせた値(つまり3乗)を順番に合計へ加算していきます。

ループが終了した時点で、合計値をreturn文で返します。計算の上限となるnの値は関数の外側で定義し、引数として関数を呼び出すことで指定できます。最後に、echoとprint_rを使って計算結果を画面に出力しています。

数学的な公式を使った効率的な方法

実は、最初のn個の自然数の3乗の和は、次のよく知られた公式によって求めることもできます。

1³ + 2³ + ... + n³ = ( n(n+1) / 2 )²

この公式を使えば、ループ処理なしにO(1)で計算できるため、nが非常に大きい場合でも高速に動作します。

<?php
function sum_of_cubes_formula($val)
{
return pow(($val * ($val + 1)) / 2, 2);
}
echo "The sum of cubes of first 8 natural numbers is ";
echo sum_of_cubes_formula(8);
?>

例えばn=8の場合、「(8 × 9 ÷ 2)² = 36² = 1296」となり、先ほどのループ処理による結果と一致することが確認できます。

まとめ

単純な繰り返し処理でも公式を利用した方法でも同じ結果が得られますが、パフォーマンスを重視する場合は公式を使った実装がおすすめです。用途に応じて使い分けましょう。

  1. 【C言語入門】最初のn個の偶数の二乗和を求める2つの方法

    「最初のn個の偶数の二乗和」とは、2、4、6、8…というように続く偶数をそれぞれ2乗し、それらをすべて足し合わせた合計値のことです。例えばn=3であれば、2² + 4² + 6² = 4 + 16 + 36 = 56 となります。この計算を行うプログラムには、大きく分けて2つの実装方法があります。それぞれの特徴とコード例を見ていきましょう。方法1:ループを使って計算する最も直感的な方法は、for文などのループを使って1からnまで順番に処理していくやり方です。各反復処理の中で偶数(2×i)を求め、その2乗を合計用の変数に加算していきます。サンプルコード#include <iostream&

  2. C言語で最初のn個の自然数の立方和を求めるプログラム

    この記事では、最初のn個の自然数(1からnまで)の立方和を求める方法について解説します。基本的なアプローチとしては、1からnまで繰り返すforループを1つ使い、各ステップでその項の立方を計算して合計に加算していきます。この方法の計算量はO(n)です。しかし、O(1)つまり定数時間でこの問題を解きたい場合は、以下の級数の公式を利用できます。1³ + 2³ + 3³ + … + n³ = {n(n+1)/2}²アルゴリズムcubeNNatural(n)begin sum := 0 for i in range 1 to n, do sum := sum + i^3