PHPにおける最適なアルゴリズムの選択
コードの問題は、タスクに対する最も最適な解決策が選択されていないことに起因することがあります。
例えば、1から1000000までの整数の合計を見つけるという課題があるとしましょう。
与えられたタスクを解決してみます:
<?php
$sum = 0;
for ($i = 1; $i <= 1000000; $i++) {
$sum += $i;
}
echo $sum;
?>
何が問題なのでしょうか?実は、この課題には数学的な解決法が存在します。
この解決法は、ほとんどリソースを必要としません!これをプログラムで実装してみましょう:
<?php
$n = 1000000;
$sum = $n * ($n + 1) / 2;
echo $sum;
?>
教訓:リソースを消費するタスクを解決する前に、その解決のために既存の数学的公式やアプローチが存在しないか必ず確認してください。
1から1000までの間で、5で割り切れる数の個数を求めてください。
1から1000000までのすべての数を書き出すのに必要な桁数を求めてください。
1から10000までの間にあるすべての素数を見つけてください。これは発展課題(※印)なので、解かなくても構いません。