Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Liczby Pierwsze PHP, błąd w skypcie
bcl
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.02.2011

Ostrzeżenie: (0%)
-----


Witam, właśnie przerabiam podstawy PHP z książki PHP Samouczek 2003 Karol Wierzchołowski,
jest tam następujący skrypt na liczby pierwsze w PHP:

  1. <?php
  2. // prime numbers
  3.  
  4.  
  5. for ($number=1;$number<=10;$number++);
  6. {
  7. $dividers=0;
  8.  
  9. for ($i=1;$i<=$number/2;$i++)
  10. if ($number%$i==0)
  11. $dividers++;
  12. if ($dividers==1)
  13. echo ("$number is the prime number<br>");
  14. }
  15. ?>


Niestety jest w nim błąd, bo wyświetla tylko ze liczba pierwsze jest 11, a nie rozpatruje liczba z przedzialu 1-10. Gdzie jest błąd?


przepraszam za zawracanie glowy, zbedny srednik w pierwszej linijce za for wszystko rozwiazuje:

  1. <?php
  2. // prime numbers
  3.  
  4.  
  5. for ($number=1;$number<=10;$number++)
  6. {
  7. $dividers=0;
  8.  
  9. for ($i=1;$i<=$number/2;$i++)
  10. if ($number%$i==0)
  11. $dividers++;
  12. if ($dividers==1)
  13. echo ("$number is the prime number<br>");
  14. }
  15. ?>
Go to the top of the page
+Quote Post
Uriziel01
post
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


A tak na przyszłość takie (oraz wiele wiele innych) problemy doskonale rozwiązuje: Xdebug. Naprawdę polecam się zapoznać jeżeli dopiero uczysz się PHP to jest on wręcz nieocenionym narzędziem.
Go to the top of the page
+Quote Post
Sephirus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


To prawda ale faktem też jest (i chyba zgodzi się ze mną wielu...), że najgorszym błędem jest właśnie błąd typu średnika w takiej pętli jak tutaj... Przy dużej ilości kodu i dużych zmianach potrafi zajść za skórę... (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Uriziel01
post
Post #4





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


No tak ale robiąc taki debug przez Xdebug'a od razu zobaczysz że skacze on 'w kółko' przez tą jedną linię a resztę pętli wykonuje tylko raz.
Swoją drogą kiedyś jakieś rozbudowane IDE (bodajże zend'a ?) miało fajne powiadomienie w stylu 'Czy na pewno tam powinien byś średnik?' gdy wykryło takowy zaraz za pętlą, całkiem fajna sprawa.
Go to the top of the page
+Quote Post
celbarowicz
post
Post #5





Grupa: Zarejestrowani
Postów: 253
Pomógł: 31
Dołączył: 30.03.2009
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Nie szukaj liczb pierwszych wśród liczb parzystych większych od 3. Algorytm będzie wówczasz szybszy. Zaczenając od 3 skasz co 2.
Go to the top of the page
+Quote Post
Orzeszekk
post
Post #6





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

Ostrzeżenie: (0%)
-----


na nauke języka polecam 30 dniowego triala (w pelni funkcjonalnego) programu PHPStorm.

Jest to swietny edytor, ktory wylapuje bardzo dobrze literowki i tego typu blędy, np zbedny srednik, zla ilosc nawiasów itd.
pisanie w notatniku gdy nie ma sie zbyt dobrego poczucia skladni to straszna męka.
Go to the top of the page
+Quote Post
bcl
post
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 11.02.2011

Ostrzeżenie: (0%)
-----


Jak mogé zainstalowac i korzystac z xdebug? Na razie widze, ze jest to tylko biblioteka .dll ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.09.2025 - 04:31