Optimaalisen algoritmin valinta PHP:ssä

Joskus koodin ongelma liittyy siihen, että tehtävään ei ole valittu kaikkein optimaalisinta ratkaisua.

Oletetaan esimerkiksi, että edessämme on tehtävä löytää kokonaislukujen summa väliltä 1 - 1000000. Ratkaistaan annettu tehtävä:

php<?php
  $sum = 0;
  
  for ($i = 1; $i <= 1000000; $i++) {
    $sum += $i;
  }
  
  echo $i;
?>

Mikä siinä on ongelmana? Asia on siinä, että tämän tehtävän ratkaisemiseen on olemassa matemaattinen ratkaisu.

Tämä ratkaisu ei käytännössä vaadi resursseja! Ohjelmoidaan se:

php<?php
  $n = 1000000;
  $sum = $n * ($n + 1) / 2;
  echo $sum;
?>

Opettavainen neuvo: ennen resursoivaa tehtävän ratkaisemista tarkista aina, onko sen ratkaisemiseen olemassa valmista matemaattista kaavaa tai valmista matemaattista lähestymistapaa.

Задание 1

Löydä numeroiden määrä, jotka jakautuvat ilman jäännöstä luvulla 5, väliltä 1 - 1000.

Задание 2

Löydä numeroiden määrä, joka tarvitaan kirjoittamaan kaikki numerot väliltä 1 - 1000000.

Задание 3

Löydä kaikki alkuluvut väliltä 1 - 10000. Tähtitehtävä, ei pakko ratkaista.