![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
Panowie jak napisać skrypt który sprawdza czy podana liczba jest liczbą pierwszą?
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 57 Pomógł: 1 Dołączył: 11.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
ponieważ nie ma skutecznego algorytmu odnajdywania wszystkich liczb pierwszych, najłatwiej chyba będzie jak zrobisz tablicę z pierwszoma kilkunatoma liczbami pierwszymi i sprawdzać czy liczba jest w tej tablicy. Któreś tam z koleii liczby pierwsze są tak duże że nikt ich chyba nie używa, a tych pierwszych pierwszych nie ma tak dużo
![]() -------------------- Ta sygnaturka to lekkie przegięcie. To poważne forum. Pomijam już fakt naruszenia regulaminu. Usuwam /~nospor/ szkoda :(
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
A jaka jest definicja libczy pierwszej? Jest to taka liczba ktora jest podzielna tylko przez 1 i przez sama siebie, no i oprocz 1ki.
Czyli sprawdzasz po kolei od 2 do N czy liczba N jest podzielna przez jakas inna liczbe. Oczywiscie mozna to zoptymalizowac. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 14.12.2003 Ostrzeżenie: (0%) ![]() ![]() |
Jezeli masz podany zakres (gorne ograniczenie tych liczb) to mozesz sprawdzac czy dana liczba dzieli sie przez wszystkie od niej nizsze z reszta wieksza niz 0, jezeli dzieli sie tylko przez 1 z reszta rowna 0 to znaczy, ze masz liczbe pierwsza. (dzielenie z reszta to operacja modulo). Nie jest to oczywiscie najodpowiedniejszy algorytm ani najszybszy ale jest bardzo prosty do napisania.
-------------------- "Was that it?" - Ertai
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 813 Pomógł: 34 Dołączył: 18.03.2007 Skąd: o stamtąd Ostrzeżenie: (0%) ![]() ![]() |
aż tak duże znaczenie ma jak zwracam false lub true?
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Nie jak tylko kiedy. Weźmy np. liczbę 999999. Twój kod wykona 999999 pętli po czym zwróci false. Mój natomiast wykona tylko 2 pętle (dla $i=2 oraz $i=3) i również zwróci false. Dlaczego? Ano dlatego, że Ty zwracasz prawdę/fałsz na końcu, po wykonaniu wszystkich pętli, natomiast u mnie zwracany jest fałsz przy pierwszym przypadku spełniającym dany warunek. Podobny efekt uzyskałbyś dając przy spełnieniu warunku instrukcję break; lub dodając do while'a && $czy === true.
Ten post edytował phpion.com 6.11.2007, 20:28:11 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Prościej ale czy wydajniej?
![]() ![]() ![]() PS: aczkolwiek różnice wydajnościowe będą mikroskopijne ale jednak ![]() Ten post edytował phpion.com 6.11.2007, 20:33:09 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 19.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
1. Jeżeli dobrze pamiętam to nie trzeba dzielić przez wszystkie liczby od 2 do N-1, wystarczy do N/2 lub do (N-1)/2, z zaokrągleniem do całkowitych oczywiście.
2. Jeżeli coś nie jest podzielne przez 2 to nie jest też przez jej potęgi, to samo z 3, 5, 7... |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 472 Pomógł: 8 Dołączył: 14.03.2004 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Witam,
ja jeszcze dorzucę ciekawy temat: Sito Eratostenesa Z powyższego linka:
Ten post edytował cornholio666 7.11.2007, 09:28:59 -------------------- I need TP for my bunghole!!!
Mój nowy przyjaciel - tytanowa płytka na stałe ------------------------------------------------------ AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 04:28 |