Wybór optymalnego algorytmu w PHP
Czasami problem kodu może być związany z tym, że wybrano nie najbardziej optymalne rozwiązanie zadania.
Załóżmy, na przykład, że przed nami stoi zadanie
znalezienia sumy liczb całkowitych od 1 do 1000000.
Rozwiążmy postawione zadanie:
<?php
$sum = 0;
for ($i = 1; $i <= 1000000; $i++) {
$sum += $i;
}
echo $i;
?>
Co jest nie tak? Chodzi o to, że dla rozwiązania postawionego zadania istnieje rozwiązanie matematyczne.
To rozwiązanie praktycznie nie wymaga zasobów! Zaprogramujmy je:
<?php
$n = 1000000;
$sum = $n * ($n + 1) / 2;
echo $sum;
?>
Morał: przed rozwiązaniem zadania wymagającego dużych zasobów koniecznie sprawdź, czy nie ma dla jego rozwiązania gotowego wzoru matematycznego lub gotowego podejścia matematycznego.
Znajdź liczbę liczb podzielnych bez reszty
przez 5, z przedziału od 1 do
1000.
Znajdź liczbę cyfr, które będą potrzebne,
aby zapisać wszystkie liczby od 1 do 1000000.
Znajdź wszystkie liczby pierwsze w przedziale od
1 do 10000. Zadanie z gwiazdką,
można nie rozwiązywać.