![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 30.01.2003 Ostrzeżenie: (0%) ![]() ![]() |
nie wiem jak napisac taki skrypt ktory pokazywalby liczby pierwsze z przedzialu od 0 do n!
![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 13.07.2003 Skąd: Torun/Poznan Ostrzeżenie: (0%) ![]() ![]() |
-------------------- On the day I was born, the nurses all gathered 'round
And they gazed in wide wonder, at the joy they had found |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 897 Pomógł: 40 Dołączył: 16.12.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
-------------------- how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 30.01.2003 Ostrzeżenie: (0%) ![]() ![]() |
thx... ale chodzilo mi bardziej o metode php.. a nie TP albo cos inengo!!
bo nie mam zielonego pojecia jak to w php napisac ![]() ![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 897 Pomógł: 40 Dołączył: 16.12.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
a przejrzałeś dokładnie ten topic, który wyżej zapodałem?
-------------------- how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 30.01.2003 Ostrzeżenie: (0%) ![]() ![]() |
Przeczytalem to.. i dalej nie doszedlem do tego jak to zrobic
![]() ![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 109 Pomógł: 0 Dołączył: 7.03.2004 Skąd: Szczecin|Bukowe Ostrzeżenie: (0%) ![]() ![]() |
Masz tutaj algorytm, czly dokladnie rozpisane co trzeba zrobić:
Kod Przykład:
Odnajdziemy za pomocą sita Eratostenesa wszystkie liczby pierwsze z zakresu od 2 do 30. Zapisujemy kolejno wszystkie liczby w tabeli. 2|3 |4 |5 |6 |7 |8 |9 |10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 30 | Teraz bieżemy pierwszą liczbę z tabeli (2) i począwszy od następnej (3) dzielimy przez nią wszystkie kolejne liczby. Te, które są przez nią podzielne wykreślamy z niej. 2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 Bieżemy kolejną liczbę (3) i dzielimy przez nią pozostałe liczby począwszy od następnej (5, bo 4 już jest wykreślone). Podzielne wykreślamy z tabeli. 2 3 5 7 11 13 17 19 23 25 29 Kolejną liczbą w tabeli jest 5. Postępujemy jak poprzednio. 2 3 5 7 11 13 17 19 23 29 W tym momencie możemy zakończyć nasze poszukiwania. Algorytm "mówi", że kolejne wykreślania należy powtarzać, nie dalej jak do liczby będącej zaokrąglonym w dół pierwiastkiem zakresu. U nas jest to: sqrt(30)=5.4772255.., po zaokrągleniu w dół otrzymujemy 5. W tabeli zostały już tylko liczby pierwsze. -------------------- "Unix is like a vigvam - no windows, no gates, Apache inside"
Warsztat: Windows XP PE | Dreamweaver | Apache 1.3.29 | PHP 4.3.4 | Araneae | MYSQL 4 | Visual Studio | Dev-C++ [b]Programowanie: llllll 40% |
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
Skrypty => php
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 10.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
wzory na liczby pierwsz są :-)
wzory Wormella, Willansa ... wzorów nie przytocze bo podręczniki zostały na kwadracie :/ |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi sie ze php jest na tyle szybkie i jesli n nie jst za duze to mozna zrobic petle i sprawdzac czy liczba jest pierwszei ew. wypisac
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 82 Pomógł: 0 Dołączył: 15.12.2003 Ostrzeżenie: (0%) ![]() ![]() |
[php:1:bb88335151]<?php
$intX = 10000; // ilosc liczb do przecedzenia przez sito $arrPrimes = range( 1, $intX ); for( $i = 2; $i <= $intX; $i++ ) { $z = 2; while( $i * $z <= $intX ) { unset( $arrPrimes[ array_search( ( $i * $z ), $arrPrimes ) ] ); $z++; } } ?>[/php:1:bb88335151] ktoś już pisał ten kod na forum bodajże cudi.. -------------------- gg:5216061
Warsztat: Win XP HE | Apache - 2.0.49 | PHP - 5 RC | MySQL - 4.0.18 | Narzędzia: WinSyntax Artykyłu v0.2beta[b]lllllllllllllllllllllllll 100% |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
O cos takiego mi chodzi dla poczatkujacego najlatwiej mi sie wydaje. nie wiem jak wy
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 7.09.2002 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Bierzemy sobie kolejno kandydatów i próbujemy dzielić przez liczby pierwsze, które trzymamy w tablicy. Jeżeli się podzieli to ne jest pierwsza w przeciwnym wypadku est. Dzielimy tylko przez te liczby pierwsze spełniające warunek pierwsza * 2 <= kandydat.
[php:1:455022dbeb]<?php // funkcja wypisuje wszystkie liczby // pierwsze z zakresu od [1..$zakres] function pierwsze($zakres) { if ($zakres >= 2) { echo '1 -> 2', "n"; $tab_pierwsze[] = '2'; // eliminujemy przypadek trywialny } $tab_pierwsze_count = 1; $j = 2; for ($i = 3; $i <= $zakres; $i++) { $pierwsza = true; $sqrt = floor(sqrt($i)) + 1; for ($k = 0; $k < $tab_pierwsze_count; $k++) { if ($i % $tab_pierwsze[$k] == 0) { $pierwsza = false; // nie jest pierwsza break; } if ($tab_pierwsze[$k] > $sqrt) { break; // nie dzielimy przez p, takie że 2 * p > i } } if ($pierwsza) { $tab_pierwsze[] = $i; ++$tab_pierwsze_count; echo "$j -> $in"; ++$j; } } } ?>[/php:1:455022dbeb] -------------------- Inni dążą do doskonałości, ja nie muszę ;)
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.07.2025 - 02:01 |