Skocz do zawartości
Forum Kopalni Wiedzy
KopalniaWiedzy.pl

Liczby pierwsze nie są rozłożone losowo?

Rekomendowane odpowiedzi

Ale co ja zgubiłem pomiędzy 49 - 77??? 

 

Po 49 mam takie liczby:

 

53
59
61
67
71
73

 

Żadna nie dzieli się przez 7..

 

Dodałem tą zasadę do algorytmu i w zakresie 11 - 1 000 000 ilość liczb z 4760 wzrosła aż do 38094 :D Czyli około 231 000. (było 266 669)

 

Nie mogę dodać załącznika 9MB z liczbami (11- 5mln) :/

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość Astro

 

 

Ale co ja zgubiłem pomiędzy 49 - 77???

 

Zgubiłeś podzielne przez 7 56, 63 i 70. Chyba rozumiesz co piszesz?

 

 

Chciałem teraz pójść w trochę inną stronę.. tzn w kierunku liczb podzielnych przez 7.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

56 i 70 nie interesują mnie bo są parzyste.. 63 nie spełnia wzoru 30x + y.. Tyle w temacie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

 

 

56 i 70 nie interesują mnie bo są parzyste.. 63 nie spełnia wzoru 30x + y.. Tyle w temacie.

Z braku czasu śledzę ten wątek jednym okiem i już się trochę całkiem* pogubiłem. A to nie jest tak, że próbujesz wyprodukować wzór na wszystkie liczby pierwsze i tylko liczby pierwsze?  

 

*zamierzony efekt literacki.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ostatnio byłem bardzo "offline", ale widzę, że wątek poszedł dalej?

 

Da się streścić w 2, 3 zdaniach co się "po działo"? 

@thikim a jak tam czasy? jakiś większy ciekawy przełom?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jajcenty, masz rację, ale ja nie próbuję na siłę tego zrobić. Staram się raczej sprawdzać, czy LP występują regularnie czy też Bardzo Nieregularnie w pewnym przedziale. Chcę, by można było wypisywać z jak największym prawdopodobieństwem liczby LP bez wykonywania "ciężkich" obliczeń. Do tego potrzebne są ścisłe opisy zasad panujących nad LP. Niestety ciągle pozostaje pytanie co decyduje o tym,że liczba pierwsza posiada tylko 2 dzielniki..

 

7(30+23) dało mi większą precyzję generowania LP: teraz przypuszczam,że trzeba by było podążyć za 11 i posprawdzać jej możliwości. Może czas na to pozwoli.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość Astro

 

 

Niestety ciągle pozostaje pytanie co decyduje o tym,że liczba pierwsza posiada tylko 2 dzielniki..

 

Buk? (drzewiej z drewna bukowego robiło się zęby bron…)

 

 

 

7(30+23) dało mi większą precyzję generowania LP

 

Mógłbyś rozwinąć myśl, bo zapewne nie tylko ja nie nadążam… (jakiś pseudokodzik choćby?)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

7(30+23) = 210 + 161

 

Za liczbę 23 podstawiłem liczby ze wzoru [30x + y], co skutkowało otrzymaniem za każdym razem liczby podzielnej przez 7, która znajduje się też w tym zbiorze. Poszukałem zależności i dało mi to liczby (28+14+28+14+28+42+14+42) - co oznacza ,że pewna grupa liczb w zbiorze [30x + y] dzieli się przez 7 i można ją Wykreślić jak w sicie. Zatem w zakresie liczb 11 - 1mln wzor[30x + y] generował w sumie 266tys liczb (w tym wszystkie LP), a teraz generuje już 228 tys i nie pomija żadnej LP..

 

Program c++ podaję w załączniku.

PrimGen.txt

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ile liczb pierwszych Ci wygenerował program w zakresie 11-1 mln?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ile liczb pierwszych Ci wygenerował program w zakresie 11-1 mln?

O ile dobrze sprawdziłem to 78 496. Mogę wysłać plik.txt z tym zakresem i sobie sprawdzisz.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość Astro

Matcher, że tak z głupia zapytam, po co Ci obsługa argumentów wywołania

int main(int argc, char** argv)

skoro zupełnie z tego nie korzystasz?

cout<<"Podaj zakres liczb:";

Podobnie, po co Ci

srand(time(NULL));

?

Niby kod krótki, ale czym bardziej próbuję zrozumieć, tym ciemniej. :)

Fajnie, że podzieliłeś się czymś takim. :D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Matcher, chodzi o coś w rodzaju 2-pass sito?

Koncepcja wygląda obiecująco jakkolwiek mam wrażenie, że próbą znalezienia "złotego podziału" próbujesz coś zaczarować? Nie wnikam bo nie kumam. Za to kodzie masz zaledwie jedną pętle dla całego zakresu liczb - to wygląda dobrze. O ile nie gubi liczb taki podział wygląda na mniej niż dla klasyka bez sit który ma zagnieżdzoną pętle n^sqrt(n). Przydało by się dorobić prymitywną funkcje poszukiwania pierwszych wśród zawężonej puli następnie zbadać czas wykonywania się programu i porównać :)

 

Wziąłem na tapetę Twój kod z poprzednich postów, troszkę upiększyłem wizualnie po swojemu. Widoczne tablice nie mają znaczenia - zapisałem bo patrząc na kod, przywołało myśli sprzed pół roku na temat prawie sita - robionego przedziałami(oszczędzając pamięć) niedokładnie odsiewające. Tak że pewne wzorce dla początkowych liczb można by "nakładać" na kolejne przedziały do odsiania, aktualizować i "przesuwać" okno w odpowiedni sposób. Tworzyć dodatkowe mini wzorce - jak w tetrisie. Przesuwając linijki nakładać nastepnie badać klasycznie liczby które pozostały. Zdaje sie że Jajcenty albo Afrodancja wkleił zapożyczony kod który realizował to podobnie więc się poddałem. W każdym razie chodzi o to aby zmniejszyć ilość obliczeń(zaleta sita) bez używania setek megabajtów RAM skoro im dalej w last tym gorzej.. i zdaje się Twój wynalazek spełnia to załozenie w roli deseni - wzór  :)

 

Dołączam kod Piersi którymi bawiłem się pół roku temu, napewno moja przeróbka bo przestały działać. Zależało na graficznym wyświetlaniu tablic tak by zobaczyć jak przesuwać indeksy mini-sit (zakres od 0 do 20), nie pamiętam czyje to były w orginale?

Piersi_twoje.txt

Piersi_M.txt

Edytowane przez Stanley

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Astro nie patrz na takie małe błędy :D Kod pisany na szybko z pewnymi częściami zapożyczonymi z innych projektów.

 

 

Matcher, chodzi o coś w rodzaju 2-pass sito?

Koncepcja wygląda obiecująco jakkolwiek mam wrażenie, że próbą znalezienia "złotego podziału" próbujesz coś zaczarować? Nie wnikam bo nie kumam. Za to kodzie masz zaledwie jedną pętle dla całego zakresu liczb - to wygląda dobrze. O ile nie gubi liczb taki podział wygląda na mniej niż dla klasyka bez sit który ma zagnieżdzoną pętle n^sqrt(n). Przydało by się dorobić prymitywną funkcje poszukiwania pierwszych wśród zawężonej puli następnie zbadać czas wykonywania się programu i porównać :)

 

Pętla nie gubi Liczb Pierwszych, co mnie trochę zdziwiło, bo myślałem,że zasada dla podzielności liczb przez 7 nie jest dobrze dopracowana i może przeskakiwać liczby z pewnym błędem "przeskoku". Nawet w zakresie 11-5mln nie znalazłem żadnego błędu, więc trzeba iść dalej i spróbować wymyślić kolejne przeskoki,by ograniczyć liczbę generowanych liczb w danym przedziale do minimum, a może i nawet do zera :) 

 

Przeskoki mamy o 28-14 i nawet 42. Myślę ,że jeśli dobrze się do tego przyłożyć i pomyśleć to pewnie znajdzie się krótsze przeskoki, choć nie jestem do końca pewny czy będzie to bardziej skuteczne..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

 

 

Clever text indexing with prime factors https://www.codeproj...ors#xx5317518xx

Super pomysł. Tak na szybko brak wyobraźni ogranicza mnie w wymyśleniu jego stosowania. Aby użyć tego do katalogowania trzeba gdzieś trzymać słownik: F('foo')=3, F('bar')=5; A jeśli słownik jest dostępny to po co przeszukiwać źródło. 

Ale sama idea zniewala prostotą :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

 

 

A jeśli słownik jest dostępny to po co przeszukiwać źródło. 

 

hm..no aby wiedzieć, gdzie to słowo (w którym akapicie) występuje.  Przecież dzięki samemu słownikowi masz tylko info, że słowo występuje w całym tekście, ale dalej nie wiesz gdzie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
hm..no aby wiedzieć, gdzie to słowo (w którym akapicie) występuje.  Przecież dzięki samemu słownikowi masz tylko info, że słowo występuje w całym tekście, ale dalej nie wiesz gdzie.

 

Wtedy musisz trzymać w słowniku adres(adresy) chunka (\r\n dla tekstów wydaje się dobrą jednostką). Nie mówię, że nieprzydatne. Wręcz przeciwnie, wydaję się, że to da się wykorzystać do budowy indeksów FT w bazach, albo fajne funkcje haszujące - choć tu dużo kolizji można się spodziewać. Ale w mojej codziennej pracy nie bardzo. Będę miał to z tyłu głowy, bo myk jest super :) Rzekłbym: przemyk!

Edytowane przez Jajcenty

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość Astro

Czemu nie, choć zrobię za marudę. :(
Z linku polecam Points of Interest i Conclusion. Może zainteresuje WhizzKida:

Prime factors can be used for text searching provided that searching for word order isn't a requirement. This technique can therefore prove especially useful in word frequency analysis problems supplementing techniques like TF-IDF and Bag of Words.

choć mam jakieś niejasne przeczucie, że to wyważanie otwartych drzwi. No i nieco zniechęcające ( :)):

The size of the stored product value can become very large with long documents so special care should be taken in ensuring the data type used to store this value is able to store the potentially large values..

Dla "kodziarzy" ( ;)) jeszcze jeden link:
https://github.com/ZackAkil/text-indexing-using-prime-factors/blob/master/text%20indexing%20using%20prime%20factors.ipynb
Jeśli ktoś wie, czy gość badał coś nieco "większego" (może jakaś bardziej profesjonalna praca, bo nie znajduję), to będę wdzięczny za odzew.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Coś czuję,że przy bardzo ogromnej ilości danych do skatalogowania będą potrzebne również tak samo ogromne liczby pierwsze..

Pomysł Oryginalny i ciekawy, choć ten słownik...

 

Ciekawy jestem czy ten projekt przejdzie, czy może zostanie tylko taką ciekawostką w tej dziedzinie :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość Astro

 

 

Ciekawy jestem czy ten projekt przejdzie, czy może zostanie tylko taką ciekawostką w tej dziedzinie

 

Nie smutaj. W tej kwestii nie decyduje jakiś prezes jakiejś partii. Nauka funkcjonuje inaczej (choć mam obawy o tę naszą, polską…). To nie jest projekt, który coś musi przechodzić. To autorski pomysł, trochę niezbyt spełniający "wymogi formalne", ale owszem, ciekawy.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A tego można tez użyć do szyfrowania.. Jak nie znasz LP to nie znajdziesz słowa..

 

Kiedyś miałem ochotę pobawić się liczbami w kwestii szyfrowania danych, ale dałem sobie spokój, bo miałem co innego na głowie. Tutaj widać Gość fanie nakreślił ideę katalogowania, a ja wciąż stoję w miejscu z wykrywalnością LP w zbiorze..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeszcze taka sprawa. Nie wiem czy było to też w innych tematach.


Podzielność liczb ze wzoru (30x+y). Po rozmieszeniu tych liczb w 8 kolumnach:

 

  11, 13,  17,  19,  23,  29.  31,  37

  41, 43,  47,  49,  53,  59,  61,  67

  71, 73,  77,  79,  83,  89,  91,  97

101,103,107,109,113,119,121,127

131.133.137,139,143,149,151,157

161,163,167,169,173,179,181,187

191,193,197,199,203,209,211,217


Pierwszy rząd wymnażany przez siebie zaczynając od liczby 7 do liczby 31 daje nam 8 liczb położonych w siedmiu rzędach. Ostatnia z nich to 217. Zaczynając od 7 mnożąc ją teraz przez 37 do 61 mamy kolejne 8 liczb w kolejnych 7 rzędach. Te 8 wymnożonych liczb zawsze występuje w tych samych miejscach. Można zaobserwować,że w każdej kolumnie w 7 rzędach występuje zawsze tylko jedna liczba.


Dla kolejnych liczb 11,13,17 itd. występuje ta sama reguła. Dla 11 w jedenastu rzędach, dla 13 w trzynastu. Zawsze otrzymamy 8 liczb po jednej w każdej kolumnie. Ogólnie to chyba jest sito. Nakładając na siebie tabelki pozostałych liczb powinniśmy w teorii zobaczyć puste miejsca, gdzie znajdują się LP.


Plik dodałem w załączniku. Rozszerzenie należy zmienić na xlsx (Excel)

 

l.txt

Edytowane przez Matcher
  • Pozytyw (+1) 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Matcher czytając Twój wpis "w tyle głowy"(w sumie to nawet dosłownie tak się dzieje) pojawiły mi się obrazki rejestrów SSE/AVX , 8 do 16 rejestrów po 8 do 16 liczb 32-64bit w każdej kolumnie po jednej liczbie pierwszej.. Właściwie to z obrazka nic nie wynika poza "dopasowaniem" Twojego odkrycia do hardware. Może dałoby się nawet zrobić operacje SIMD do generowania liczb pierwszych. Może dało by się zrobić z tych "ramek" film.. ciekawe jaką miałby fabułę, czy układałby się w jakiś "pattern" czy każda z takich "ramek" jest niepowtarzalna? (w sensie zapełnienia tego samego zestawu pól)

Ciekawe spostrzerzenie..

 

Cykliczne przeglądy maszyn.. jak zaplanować w sposób optymalny? Jeśli ustawie np. przegląd X na okres co 2 tydzień, przegląd Y na co 4 tydzień a przegląd Z na co 16 tydzień to bankowo bardzo często będą się nakładać w dodatku wszystkie naraz.. 

2,4,6,8,10,12,14,16

3,6,9,12,15,18,21

4,8,12,16,20,24,28

5,10,15,20,25,30

6,12,18,24,30,36

 

Przegląd X co 3 tygodnie, przegląd Y co 7 tygodni, przegląd Z co 11 tygodni?

3,6,9,12,15,18,21,24,27,30,33,36

7,14,21,28,35,42,49,56

11,22,33,44,55,66

 

Liczby pierwsze  w tym względzie wydają się bardzo praktyczne.

Edytowane przez Stanley

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

 

 

Cykliczne przeglądy maszyn.. jak zaplanować w sposób optymalny?

Skoro tak "swobodnie" możesz wybrać tygodnie (2tyg. zmienić na 3, a 4tyg. zmienić na 7!), to bez zaprzęgania do tego liczb pierwszych (lub nie) wybrałbym taką opcję. Skoro mamy 3 różne przeglądy, to przegląd najczęstszy musi być co 3 tygodnie.

Przegląd X co 3 tygodnie - 3,6,9,12, 15, 18, 21, 24,27, 30, 33, 36, 39, 42, 45, 48, 51, 54, ...

Przegląd Y po każdym drugim przeglądzie X, czyli - 7, 13, 19, 25, 31, 37, 43, 49, 55...

Przegląd Z po każdym drugim przeglądzie Y, czyli - 14, 26, 38, 50...

i żaden przegląd się nie nałoży :)

[Pogrubione liczby pierwsze.]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W tych "Przeglądach" wychodzi wam trochę za dużo liczb :)

 

Można też tak:

co 30 tygodni:

 

11:41:71:101:131:161

13:43:73:103:133:163

17:47:77:107:137:167

23:53:83:113:143:173

29:59:itd

31:61:itd

37:67:itd

 

To i tak to samo co opisywałem wcześniej :D

 

Ogólnie to nie każdy by był zadowolony z ujawnienia wzoru na LP :>

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...