Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Liczby pierwsze
Mlodycompany
post
Post #1





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam. Chciałbym zrobić generator liczb pierwszych do miliona. Liczba pierwsza to ta która dzieli się przez siebie i przez 1 czyli w sumie mam dwa dzielniki. Głowie się nad tym już parę godzin i nic dobrego nie wymyśliłem. Oto co zdołałem zrobić:
  1. <?php
  2. print('<pre>');
  3. function znajdzDzielniki($liczba){
  4. $dzielniki = array();
  5. for($i = 1; $i <= $liczba; $i++){
  6. $dziel = $liczba % $i;
  7. if($dziel == 0){
  8. $dzielniki[] = $i;
  9. }
  10. }
  11. print_r($dzielniki);
  12. }
  13. function znajdzPierwsze($liczba){
  14. $pierwsze = array();
  15. for($i = 1; $i <= 1000000; $i++){
  16. $dziel = $liczba % $i;
  17. if($dziel == 0){
  18. echo znajdzDzielniki($i);
  19. }
  20. }
  21. print_r($pierwsze);
  22. }
  23.  
  24.  
  25. echo znajdzPierwsze($_GET['liczba']);
  26. ?>

Czy ktoś mógłby mnie naprowadzić na opracowanie dobrego skryptu?? Proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ddiceman
post
Post #2





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


Mozna to uproscic obliczeniowo, bo wystarczy sprawdzac dzielniki od 2 do pierwsiastka z liczby a nie do liczby:
ps. jedynka jak wiadomo liczba pierwsza nie jest (liczba wg definicji to liczba naturalna, ktora ma dokladnie 2 rozne dzielniki naturalne: 1 i siebie)

  1. <?php
  2. define('ZAKRES', 1000000);
  3.  
  4. $liczby_pierwsze = array();
  5. for($liczba = 2; $liczba < ZAKRES; $liczba++){
  6. $liczba_moze_byc_pierwsza = true;
  7. for($dzielnik = 2, $dl = floot(sqrt($liczba)); $dzielnik < $dl; $dzielnik++){
  8. if($liczba % $dzielnik == 0){
  9. $liczba_moze_byc_pierwsza = false;
  10. break;
  11. }
  12. }
  13. if($liczba_moze_byc_pierwsza == true){
  14. $liczby_pierwsze[] = $liczba;
  15. }
  16. }
  17. ?>


Ten post edytował ddiceman 31.07.2008, 10:33:34
Go to the top of the page
+Quote Post

Posty w temacie


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: 12.10.2025 - 10:06