Ilość dwustu cyfrowych liczb pierwszych - program.

ZajcuNS
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 12 gru 2014, o 13:43
Płeć: Mężczyzna
Lokalizacja: Nowy Sącz

Ilość dwustu cyfrowych liczb pierwszych - program.

Post autor: ZajcuNS »

Hm... by zaspokoić swoją ciekawość po dołożeniu do programu licznika czasu mam tak
Dla przedziału:
0-10000 - 2sekundy
0-100000 - 4sekundy
0-1000000 - 134sekundy
0-10000000 - 11800 sekund czyli około 3,27h. ~SIC!~
Z tym, że ja mam leciwy komputerek. Q6600, 4rdzeniowy 2,4Ghz, wiec nijak się ma do nowych I7.
Gouranga
Użytkownik
Użytkownik
Posty: 1595
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 247 razy

Ilość dwustu cyfrowych liczb pierwszych - program.

Post autor: Gouranga »

Może na Intel Xeon Phi którego mamy na UG by poszło
albo jakbyś pisał ten program pod GPU i odpalił na jednostce wyposażonej w kilka kart nVidia Tesla z procesorami GPU nVidia Kepler to by pykło
ZajcuNS
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 12 gru 2014, o 13:43
Płeć: Mężczyzna
Lokalizacja: Nowy Sącz

Ilość dwustu cyfrowych liczb pierwszych - program.

Post autor: ZajcuNS »

no właśnie tu jest ta kwestia ile by to trwało, a jeśli wynik byłby zadowalający (powiedzmy do 48h) to wtedy postawić inne pytanie gdzie to zrobić :P bo dla 48h to już byłbym wstanie wydać hajs żeby np wypożyczyć pc'ta czy cuś skoro na szali jest 5 do indeksu :)
Ale koledzy wyżej mogą mieć dużo racji i nawet na superkomputerze zajęło by to w latach jak nie setkach jak ktoś tam wyżej wspomniał.


EDIT:
chyba mnie ciach olśniło :P
Chociaż pewnie zaraz to sprostujecie.
Program działa długo bo wypisuje wszystkie liczby, a przecież w zadaniu chodzi o ich ilość a nie o to jakie to są.
W momencie gdy w programie anulowałem linijkę wypisującą liczby poprzez // to wynik(w sensie ich ilość) mam praktycznie od razu.
edit2: no moze nie odrazu ale dla 100000000 trwało to 4sekundy a nie jak uprzednio 4sekundy dla 100000. Chociaż mimo wszystko nadal jestem ograniczony mocą obliczeniową oraz intigerem.
edit3: dla 1z9 zerami robi to juz 49sekund.. Wzrost szybkości jest ewidentny, lecz nadal za mało na 200 cyfr.
Ostatnio zmieniony 13 gru 2014, o 08:07 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Elayne
Użytkownik
Użytkownik
Posty: 927
Rejestracja: 24 paź 2011, o 01:24
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 75 razy
Pomógł: 274 razy

Ilość dwustu cyfrowych liczb pierwszych - program.

Post autor: Elayne »

Zakładając że hipoteza Riemanna jest prawdziwa to liczb pierwszych poniżej \(\displaystyle{ 10^{24}}\) jest
18.435.599.767.349.200.867.866.

Awatar użytkownika
vpprof
Użytkownik
Użytkownik
Posty: 492
Rejestracja: 11 paź 2012, o 11:20
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 26 razy
Pomógł: 64 razy

Ilość dwustu cyfrowych liczb pierwszych - program.

Post autor: vpprof »

Ja tylko dopowiem, że ograniczenie typów to żadne ograniczenie, bo są biblioteki, które liczą na wielkich liczbach , z czego moim zdaniem GNU Multi-Precision Library ma chyba najwięcej zaimplementowanych funkcji.

Acha, no i owszem, ludzie znają liczby pierwsze mające i miliony cyfr (zazwyczaj są to liczby Mersenne'a), ale tu chodzi o wszystkie liczby pierwsze z zadanego przedziału, a to już nie lada wyzwanie :)

14-letni Gauss odkrył, że \(\displaystyle{ \pi (x) \approx \frac{x}{\ln{x}}}\), więc to też da jakiś pogląd na skalę problemu :)
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

Ilość dwustu cyfrowych liczb pierwszych - program.

Post autor: Afish »

ZajcuNS pisze:no właśnie tu jest ta kwestia ile by to trwało, a jeśli wynik byłby zadowalający (powiedzmy do 48h) to wtedy postawić inne pytanie gdzie to zrobić :P
Nie masz szans tego zrobić nawet i w 48 dni. Napisałem wcześniej, że znane są wartości funkcji \(\displaystyle{ \pi}\) do \(\displaystyle{ 10^{25}}\), co po ludzku znaczy, że znamy dokładną liczbę liczb pierwszych do liczb mających 25 cyfr. I to nie dlatego, że nikt tego nie liczył, tylko dlatego, że tego nie da się liczyć szybko, bo danych jest zbyt dużo. Ty chcesz liczyć dla 200 cyfr, a po prostu póki co nie jesteś w stanie tego zrobić.
ODPOWIEDZ