![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 1 Dołączył: 10.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Znalazłem taki skrypt do sprawdzania liczby pierwszaej
Troszkę go zmodyfikowałem(kod poniżej)
Oczywiście mój kod nie działa. Czy mógłby mi ktoś wytłumaczyć dlaczego? Ja go rozumiem tak, że sprawdza wynik dzielenia modulo, jeśli jest to 0(czyli liczba złożona)zwraca fałsz a jeśli coś innego prawdę. Potem mamy warunek, jeśli pierwsza to prawda to wyświetla odpowiedni komunikat. Problem w tym, że mój skrypt wyświetla, że wszystkie liczby są pierwsze. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 78 Dołączył: 4.11.2008 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
zmieniając wartość $pierwsza w pętli nadpisujesz jej wartość. Przeanalizuj sobie iteracja po iteracji jak działa ten skrypt: dla liczby 6 w iteracji $i = 2 oraz $i = 3 do $pierwsza przypisane zostanie false(liczba nie jest pierwsza). Ale skrypt iteruje dalej i dla $i = 4 oraz $i = 5 nadpisuje tą wartość bo 6 nie jest podzielne przez 5. I taka wartość, jako ostatnia, zostaje. Daj sobie break; po przypisaniu false do $pierwsza i powinno działać
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 1 Dołączył: 10.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
dzięki działa
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 31 Dołączył: 30.03.2009 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
usprawnij algorytm, liczb pierwszych szukaj wśród liczb nieparzystych(poza liczbą 1,2-sprawdź definicję liczby pierwszej) pozostałe parzyste dzielą się przez 2 więc nie ma potrzeby szukać wśród nich l.pierwszych, ponadto dzielenie wykonuj nie dalej niż do połowy danej liczby(dlaczego? sprawdź na kalkulatorze)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:40 |