Jump to content
Forum Kopalni Wiedzy

taśma9

Users
  • Content Count

    19
  • Joined

  • Last visited

  • Days Won

    1

taśma9 last won the day on December 23 2017

taśma9 had the most liked content!

Community Reputation

1 Neutral

About taśma9

  • Rank
    Fuks
  1. Na razie program jest w przygotowaniu, rozwinięcie poprzedniego, nie sądziłem że z javy można tyle wyciągnąć. Teraz zrobiłem że sito jest robione kawałkami dzięki temu zajmuje niewiele pamięci i działa szybciej, z tego też względu nie jestem w stanie powiedzieć ile jest pierwszych w zakresie 1 ... 10**12 ale gdy sprawdzam segmentami to ilość się zgadza. Jak ogarnę podział segmentów do końca to zrobię sumowanie i wtedy będzie wiadomo. Już nie pamiętasz . Właśnie ja mam takie tempo wracam po pół roku, po roku do tematu gdy mam już przemyślane nowe pomysły i tak w ślimaczym tempie sobie pisze
  2. 0 ... 100 000 000 020 time: 52.441000000003456 nowa wersja w przygotowaniu w trybie jednowątkowym jest 52.441000000003456 vs primesievie 17.65 czas może ulec zmianie na gorsze .. ale też na lepsze 10**12 wychodzi około 12 minut wszystko podane w trybie jednowątkowym, a algorytm przygotowany jest już pod wielowątkowość wychodzi że w primesieve jest około 3 razy szybsze od algorytmu w javie ciekawe czy uda mi się wycisnąć coś więcej
  3. Ja bym obstawiał, że najpierw będzie tak jak masz z kalkulatorem. Włączasz wtedy gdy potrzebujesz. rahl, zarejestrowałem Twoje literówki, były naumyślne, czy niechcący ?
  4. Mnie osobiście jakoś to Sito Małgorzaty nie przekonuje. Brak jakichkolwiek materiałów w wójku google. Może przy bardzo dużych liczbach pozwala skoncentrować się tylko na tych które są pierwsze ? jeśli tak jest, to fajnie, tylko że robiąc sito, które wylewa się na dysk, osiągnę dużo większą wydajność kosztem pamięci dyskowej.
  5. Jesteś wybitną jednostką, miałem kilku kolegów z C64, sam też miałem, zabawy raczej kończyły się na zrobieniu jakichś niezbyt skomplikowanych demek, lub gierek, albo procedur. Nigdy nie zapomnę jak kolega nie umiał włączyć drugiej, trzeciej, i kolejnej muzyczki, gdzie wystarczyło do akumulatora wstawić numer muzyczki, przed skokiem do playera
  6. Tu się zgadzam. Najlepsza by była fuzja najlepszych funkcji mózgu ludzkiego i cech komputera. Nie potrafimy na komputerze zasymulować wybitnego kreatywnego umysłu, jeśli tak się kiedyś stanie, człowiek może przestać być potrzebny.
  7. Za najlepszych czasów stawiałem LFSa - Linux From Scratch, cały tydzień kompilacji programów, ale po jakimś czasie przemyślałem temat i stwierdziłem że przecież mogłem sobie w coś pograć w tym czasie, albo posurfować po internetach Za czasów C64 czy Amigi nie dotykało się praktycznie systemu, a ile było fajnych gier i programów
  8. Użytkuje Ubuntu bodajże od 2008r , jedno co mogę powiedzieć, to że aktualizacja to zły pomysł, zawsze lepiej postawić od nowa. Na 2 próby, 2 nieudane, teraz zastanawiałem się czy zaryzykować przy 17.04, ale wole mieć spokój i czas i energię poświęcić na ciekawsze rzeczy, i 17.10 stawiałem czyściocha jak zwykle. Powiem tak, zapomniałem co to problemy z systemem operacyjnym, zamiast grzebać w nim, po prostu go użytkuję, czego wszystkim życzę
  9. Patrzę na tą tabelkę i chyba wiem o czym mówisz. Najprostsze rozwiązanie które widzę to robić sito za każdym razem jak znalazłeś nową LP: np znalazłeś 2, robisz sito modulo 2, czyli binarne, znalazłeś 3, robisz sito modulo 6, znalazłeś 5, robisz sito modulo 30, znalazłeś 7, robisz modulo 210 ... itd do nieskończoności, tylko że szybko zabraknie pamięci w komputerze, bo okaże się że przy 10 LP musisz zrobić sito modulo 6,469,693,230 które jeśli będziesz przechowywać w bitach zajmie ponad 770MB co jeszcze jest do ogarnięcia, ale przy 11 LP czyli "31" modulo dojdzie do wartości 200,560,490,130 a to już trzymane nawet w formie bitów zajmie przeszło 23GB. Duży przeskok, ale następny to ponad 860GB, a następny to już ponad 34,5 TB, pod warunkiem że każda liczba to 1 bit. Minusy są takie że: albo musisz trzymać wtedy bit do każdej liczby, bo jeżeli stworzysz sito dynamicznie to będzie to najprostszy sposób na wyliczenie jaka to liczba, albo musisz zapamiętywać LP, możesz to robić na zasadzie że poprzednie sito modulo tworzy nowe sito modulo, albo zapamiętywać LP w formie int lub long RAM zawsze będzie się zapełniał w nieskończoność, jeśli będziesz liczył nieskończony zakres Patrzę na arkusz i tak myślę, gdybyś wiedział jak ominąć ten problem, to byłby to wzór na liczby pierwsze
  10. Mam wrażenie że będę musiał przestudiować jeszcze raz cały topik i przemyśleć temat Tablica jest dobra dla mniejszych zakresów, ale im dalej w las, tym ciemniej - mniej LP. Na tym moim programie można by było sprawdzić czy liczba jest pierwsza w zakresie od 1 do liczby z 4 z przodu i następnie 21 zerami, co już trochę wykracza poza 64bity, co mam zresztą w planach Jeszcze muszę dopisać część zliczającą LP do Long.MAX_VALUE, i tutaj z czasami już może nie być tak wesoło. Wzór na liczby pierwsze to musiało by być coś co adaptuje się do zmieniających się warunków, po co sprawdzać 80 tysięcy liczb w których nie ma LP ? albo zajmować tym pamięć. Na dzisiaj mi starczy
  11. Moja tabelka tak wyglądała, gdy robiłem na sicie Eratostenesa, to było na początek tak dla uproszczenia, łatwiej było znaleźć reguły, które potem ładnie przeniosły się na sito modulo 30. Mój program działa na całej tablicy. Matcher, ten program który teraz dodałeś w jaki sposób oblicza liczby pierwsze ? Zakładam że nie dodaje liczb 2,3,5 i 7 do wyniku.
  12. W mojej tabelce jest stała reguła do wykreślania liczb które nie są liczbami pierwszymi, np znajdujesz indeks [0,1] który ma wartość "0" (czyli 3) to znaczy że to liczba pierwsza, teraz tak, indeks [3,1] zaznaczasz jako "1" ( czyli 33 ), indeks [6,1] zaznaczasz jako "1" ( czyli 63 ): 1 | 3 | 7 | 9 11 | 13 | 17 | 19 21 | 23 | 27 | 29 31 | 33 | 37 | 39 41 | 43 | 47 | 49 51 | 53 | 57 | 59 61 | 63 | 67 | 69 czyli znalazłeś na indeksie 0 liczbę 3, i teraz w pionie w tym słupku dodajesz do indeksu tą liczbę ( 3 ) i skreślasz, i tak do końca zadeklarowanej tabelki, 3, 33, 63, 93, 123, 153, indeks cały czas zwiększasz o 3. Dla innych kolumn zmienia się tylko punkt startowy, dla zerowej kolumny to indeks "2", dla trzeciej kolumny to indeks "27", czyli pierwsza liczba która dzieli się przez "3" w danej kolumnie. Dla 7 indeks będziesz się zwiększał o 7, dla 11 o 11. p.s. tylko koniec końców wyszło że liczb pierwszych o 1 do 30 jest Osiem, więc pierwsze skojarzenie to bajt i 8 bitów, wierzę pan od primesievie wpadł na coś bardzo podobnego. p.p.s a nawet nie osiem liczb pierwszych, tylko przy modulo 30 jest osiem słupków w których mogą być liczby pierwsze. p.p.p.s ERRATA: dla drugiej kolumny to indeks "2" czyli liczba "27", a dla trzeciej kolumny to indeks "0". sorki, taki mały świerszczyk 4p.s. Nie odpowiedziałem na pytanie, liczba pierwsza w sicie będzie miała wartość "0" bo nie została skreślona przez żadną poprzednią liczbę.
  13. Jajcenty, maszyna wirtualna mi się przyda żeby sprawdzić jak instalować i uruchamiać programy pisane w Javie, żebym wiedział jak u znajomych którzy mają tylko Windowsy sprawdzić swój program, ale jakiś skrypt. Czysta potrzeba wiedzy Z "C" dałem sobie spokój, dla mnie za trudne. To co robiłem w "C" w kilka miesięcy w Pythonie zrobiłem w tydzień. dotnet ? hmm, tego nie znam Mam Javę a Eclipse to mój ulubiony IDE I wygląda że tak już zostanie. A dlatego Wine, ponieważ chciałem jakoś zrobić test, a innej możliwości pod Ubuntu nie znam, chyba że Dosbox p.s. Mój programik powstawał dosyć długo, koniec końców to jakaś odmiana sita Atkina, ale najpierw było to sito Eratostenesa operujące na kolumnach liczb z końcówką 1,3,7,9, zresztą jeszcze mam kod na pamiątkę Ale to właśnie na Eratostenesie zauważyłem że można odznaczać w każdej kolumnie liczbę że nie jest pierwszą bo jest pochodną, a następna pochodna np liczby 3, to 33, czyli indeks 0 + 3 = 3, czyli 3 * 10 + 3, wystarczyło obliczyć punkt początkowy, i dalej to już zwykła pętla dla każdej z czterech kolumn. Nie było łatwo p.p.s. Matcher, to znaczy że robisz wszystko w ascii ?
  14. takie mam wyniki bez OC: 78,499 pierwsza to 1000003, czas: 14s mój: 0.003s 148,934 pierwsza to 2000003, czas: 39s mój: 0.008s 216,818 pierwsza to 3000029, czas: 1m17s mój: 0.008s ale jest duże ALE, ponieważ nie mam Windowsów, test robiłem na wine-2.0.2 pod Ubuntu 17.10, tylko taki mam system. Od czasów możesz odjąć jakieś 5 sekund, przez które wpisywałem numer liczby pierwszej, a po zakończeniu działania programu wciskałem Enter. Przy dużych liczbach ( 100 milionów ) Wine nie dawało rady, wywalało się. Już od jakiegoś czasu w planach miałem maszynę wirtualną z darmowym XP, więc chyba po prostu przyspieszę wykonanie zadania, i przeprowadzę ponowne testy
×
×
  • Create New...