Alegerea algoritmului optim în PHP

Uneori problema codului poate fi legată de faptul că a fost aleasă nu cea mai optimă soluție pentru sarcină.

Să presupunem, de exemplu, că avem sarcina de a găsi suma numerelor întregi de la 1 la 1000000. Să rezolvăm sarcina dată:

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

Ce este în neregulă? Ideea este că pentru rezolvarea sarcinii date există o soluție matematică.

Această soluție practic nu necesită resurse! Să o programăm:

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

Morala: înainte de a rezolva o sarcină care consumă multe resurse verificați întotdeauna dacă nu există o formulă matematică gata făcută sau o abordare matematică gata făcută pentru rezolvarea ei.

Задание 1

Găsiți numărul de numere divizibile fără rest la 5, din intervalul de la 1 la 1000.

Задание 2

Găsiți numărul de cifre care vor fi necesare pentru a scrie toate numerele de la 1 la 1000000.

Задание 3

Găsiți toate numerele prime din intervalul de la 1 la 10000. Sarcină cu asterisc, poate fi omisă.