PHP-ში ოპტიმალური ალგორითმის არჩევა

ზოგჯერ კოდის პრობლემა შეიძლება დაკავშირებული იყოს იმასთან, რომ ამოცანის ამოსახსნელად არჩეულია არა ყველაზე ოპტიმალური გზა.

დავუშვათ, მაგალითად, ჩვენ წინაშე დგას ამოცანა ვიპოვოთ მთელი რიცხვების ჯამი 1-დან 1000000-მდე. მოდი, ამოვიცნათ დასმული ამოცანა:

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

რა არის სწორი? საქმე იმაშია, რომ ამ ამოცანის ამოსახსნელად არსებობს მათემატიკური ამოხსნა.

ეს ამოხსნა პრაქტიკულად არ საჭიროებს რესურსებს! მოდით, დავაპროგრამიროთ იგი:

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

მორალი: რესურსისმოთხოვნიანი ამოცანის ამოხსნამდე აუცილებლად შეამოწმეთ, არსებობს თუ არა მისი ამოსახსნელად მზა მათემატიკური ფორმულა ან მზა მათემატიკური მიდგომა.

Задание 1

იპოვეთ რიცხვების რაოდენობა, რომლებიც იყოფა ნაშთის გარეშე 5-ზე, 1-დან 1000-მდე შუალედში.

Задание 2

იპოვეთ ციფრების რაოდენობა, რომელიც დაგჭირდებათ, რომ ჩაწეროთ ყველა რიცხვი 1-დან 1000000-მდე.

Задание 3

იპოვეთ ყველა მარტივი რიცხვი შუალედში 1-დან 10000-მდე. ამოცანა ვარსკვლავით, შეგიძლიათ არ ამოხსნათ.