(...) Autor konsekwetnie nie napisał nam algorytmu, ale co tam,
można go odtworzyć z dołączonego (...)
- ? oczywiście napisałem! => http://republika.pl/c_rasz/sito/cross.htm Lecz
Takamura KONSEKWENTNIE go przemilcza... Zbyt złożony opis, a może podpadłem mu,
czy-co?
dla zachowania go dla potomnych - zapiszę go poniżej
- kto wie, może owo „zapisanie” zapewni Ci miejsce w annałach? ;-) - tym
niemniej – dziękuję!
DLP(i) = Odźwierna(i)* Factor(i)*Dominika(i-1); i=1,2,...
* Dominika(i-1) ? oczywiście: NIE! Powinno być:
DLP(i) = Odźwierna(i)* Factor(i)*Dominika(i) ; i=1,2,...
lub, ponieważ Dominika(i)= Dominika(i-1) * DLP(i-1) to, można też pisać:
DLP(i) = Odźwierna(i)* Factor(i)*Dominika(i-1) * DLP(i-1)
Jeśli powyższy błąd powieliłeś w swej implementacji, to fakt, iż otrzymałeś W
OGÓLE jakieś L. pierwsze – jest, doprawdy: zaskakujący...
Jeszcze słówko o notacji, bowiem Takamura zapisuje: „Factor(i)”. Hm, – jako że
faktor jest sprawą naszego wyboru, a więc nie jest wyliczany przez algorytm –
więc uważałem, iż NIE powinno się używać przy nim indeksu, a już na pewno: nie
identycznego, z tym, który występuje przy wielkościach, będących faktycznie
iterowanymi... No, ale to tylko drobiazg.
Excel nie oferuje zmiennych typu double(??), a jedynie umożliwia
obliczenia z precyzją 15 ('nie- obliczenia 17, wyświetlanie
13'- [uwaga Takamury]) cyfr znaczących
- nie wiem jakiego Turbo-Excela używa Takamura-san, ale MÓJ – liczy dokładnie
(bez zaokrągleń) liczby niewiększe niż
L_max= 2 + 2^53 = 9 007 199 254 740 990 co niby ma cyfr (10-tnych) więcej niż
15, ale przecież nie WSZYSTKIE liczby 16-co cyfrowe obrabia prawidłowo (a już na
pewno: nie 17-ki!). Podałem więc „wielkość bezpieczną” – w pewnym przybliżeniu,
łatwiejszym do zapamiętania...
Jeśli ktoś uważa, że JEGO Excel liczy precyzyjniej, to jako ćwiczenie proponuję
wpisać do komórki (a): powyższą liczbę (w zapisie 10-tnym), w drugiej (b)
umieścić liczbę 1, a w kolejnej (c) polecenie sumuj a+b. W następnej (d) komórce
liczbę -1, i w (g) znów sumuj c+d... Zapewni to duże emocje ćwiczącemu, kiedy
okaże się, że do (a) można dodać 1-kę, lecz od wyniku – już jej odjąć... nie
można! Zaś co do wyświetlania: OCZYWIŚCIE można wyświetlić tyle cyfr danej
liczby, ile tylko jest znaczących, wystarczy tylko trochę sprytu... A jeśli ktoś
lubi oglądać końcowe, będące efektem zaokrąglania zera – to nawet dużo-dużo
więcej: ponad 250 (sic!)
No to powiedzy to jawnie, Excel umożliwia obliczenie
co najwyżej 4 – 5 generacji liczb DLP
- ależ powiedziałem to CAŁKIEM „jawnie”: Excel umożliwia obliczenie (dokładne)
dla liczb ~15-to cyfrowych. Ale czy my tu zajmujemy się testowaniem Excela?! Czy
to, że za pomocą rzeszota, w którym „na jedną generację” przypada jedno
dodawanie i 2 mnożenia – że za pomocą tego prostego algorytmu, już w 5-tej, góra
ósmej generacji, produkuje się liczby ponad owe, microsoftowe ograniczenie – to
ma być zarzut w stosunku do... metody rzeszota?! Trudno się mi oprzeć wrażeniu,
iż szukasz dziury „za wszelką cenę”.
Z samozaparciem wprowadził do niego ok 10
tysięcy liczb pierwszych. Można go jeszce rozszerzyc, no co
w końcu mamy 64 K wierszy. Ale.. czy to wystarczy
do identyfikacji liczby 15 cyfrowej jako pierwszej?
- głupa rżniesz, czy jak? Alibo strugasz Greka (BTW: znajomy używa powiedzenia:
chyba rżniesz Franka. Ciekawe, skąd mu się to wzięło...). Napisałem WYRAŹNIE iż
znajdywane liczby wymagają weryfikacji. Oraz, że: „odpowiednich do tego metod
jest w sieci wiele, i to RÓŻNYCH”. Natomiast dołączony ad hoc arkusz
„weryfikacja” – nie jest, w ŻADEN sposób, składnikiem METODY, czyli samego
„rzeszota” jako pomysłu MATEMATYCZNEGO! Jedynie dla zwiększenia walorów
ilustracyjnych – dodałem, w swej skleconej na kolanie, dość prymitywnej
implementacji, ową funkcję sprawdzającą, z użyciem tabeli liczb pierwszych –
gdyż, w przeciwieństwie do jakichkolwiek testów skróconych – daje ona 100%-tową
pewność. I kropka!
Zaś każdy, choć odrobinę zorientowany w temacie, pamięta chyba (no tak,
najwyraźniej z wyjątkiem Takamury), że ten sposób weryfikacji daje nam ową
pewność jedynie dla x<= (p_max)^2 gdzie x to liczba weryfikowana, zaś p_max
jest największą L. pierwszą, umieszczoną w takiej tabeli. Reasumując: jednak
najwyraźniej Takamura rżnie Franka...
Dlatego może dodam już całkiem, jak chłop krowie na miedzy: jeśli jeszcze inne
osoby chciałyby ową prowizoryczną, niezależną od „rzeszota”, toporną metodą
weryfikować otrzymane wyniki 15-to cyfrowe, to potrzebne im będzie rozszerzenie
tabeli „weryfikuj”, gdziesik tak do liczby ~ 31 622 777 - co oznacza prawie 1,9
mln L. pierwszych... Lecz wydaje mi się, że dla tak dużych zakresów - chyba
ZNACZNIE lepiej byłoby użyć jakiegoś innego, SKRÓCONEGO testu.
Kolego (c)RaSz mam propozycję proszę sprawdzić, czy
liczba 13 cyfrowa 1 034 349 693 823 jest pierwsza
Liczba powyższa leży na prawidłowych gałęziach rzeszota, ze współczynnikami
(faktorami): 2; 2; 3; 86; 67438; 129; (sprawdź!) - więc w pierwszym „czytaniu”
rzeszoto WYKLUCZYĆ jej nie potrafi. Jednak już od jej 4-tej generacji, na tej
gałęzi mamy: B(4)= 19 + 3 * (1*2*3*7) = 145 czyli liczbę złożoną. I podobnie
jest w dwóch, kolejnych generacjach: B(5)= 68 773 oraz B(6)= 7 803 319 753 -
obie złożone. I jeszcze zerknijmy w równanie końcowe:
B(7)= B(6) + n * 7 957 723 830 gdzie n będzie= 129 Ale może warto wszystkie
składowe tegoż równania rozłożyć jeszcze na L. pierwsze:
B(6)= 7 803 319 753 = 17* 67*1427*4801
n = 129 = 43 * 3
dominika (6)= 7 957 723 830 = 2 * 3 * 7 * 19 * (5*29) *(97*709)
Jak widać – odźwierna jest L. złożoną, w dodatku: dzielników ma dość sporo...
Jest to wskazówka mówiąca, iż prawdopodobieństwo otrzymania liczby pierwszej w
tej gałęzi – jest silnie zmniejszone... Aby to sprawdzić dokładniej, musiałbym
się jeszcze trochę nabiedzić, nad ustalaniem współczynników, ale już późno, a ja
nie mam podgatowki, no i jestem trochę zmachany.
4 Małe podsumowanie
Narzędziem, które przedstawił nam (c)RaSz można obliczyc 4 - 5
generacje DLP , a narzędzia do sprawdzenia czy sa pierwsze mamy tylko
do 3 - 4.
- ? No i znowu: czy Ty wystawiasz mi laurkę, czy krytykujesz Excela?! Jeśli
tak, to miej pretensje do Gatesa. Bo za pomocą rzeszota, możesz znaleźć liczby
pierwsze DOWOLNIE duże. I oczywiście: KAŻDĄ liczbę pierwszą. Choć – faktycznie:
NIE za pomocą mojego, tymczasowego arkusza w Excelu... Zaś znajdujące się w
arkuszu „narzędzie do sprawdzania” – NIE jest składnikiem matematycznej idei
rzeszota!! Natomiast mechanizmu (c)raszowania, czyli procedury odwrotnej do
„rzeszota” – nigdzie dotąd nie opublikowałem, i – póki co – prędko raczej tego
NIE zrobię... Ale efekty jego działania – umieściłem powyżej, w postaci
„rozkładu” podanej przez Ciebie liczby „na składniki (faktory) generujące”,
umożliwiające odtworzenie „produkcji” tej liczby za pomocą metody „izolowanych
ścieżek”. Co z kolei pozwala (zazwyczaj) odrzucić znaczną część liczb
pseudo-pierwszych, ale TYLKO tych, które – Uwaga! – zostały wygenerowane INNYMI
niż „rzeszoto” metodami. Ono samo-siebie sprawdzać NIE może...
Ja używam Matematiki, który nie jest programem specjalistycznym i nie
umie badać liczb bardzo dużych, ale liczby o kilkanaście tysiącach cyfr
można badać. Jest to zapewne postęp do narzędzia (c)RaSz
- zlitujżesz się, Takamura! Rzeszoto jest algorytmem MATEMATYCZNYM, a Ty go
zestawiasz z PROGRAMEM. Czemu nie z telewizorem, albo – czy ja wiem? -
samowarem!? Chyba za mało zjadłeś dziś, alibo popiłeś cóś za wiele... A takie
twierdzenie Talesa – lepsze jest od Windowsów, czy może gorsze? A młotek – jest
poręczniejszy od długopisu, czy też odwrotnie?!
Udało się wykryć conajwyżej 5 liczb pierwszych w generacjach
rzeszota, i mozna przypuszczać, że nie ma ich więcej.
KAŻDA, dowolna L. pierwsza – leży na którejś z gałęzi rzeszota. Niedokładnie
przyjrzałeś się algorytmowi!
(c)RaSz niewiadomo dlaczego zaczyna od generacji 2
G_1 = {2}; G_2={3} zaś G_3={5; 7} natomiast G_4 ma już 10 elementów: 4 „za
piątką” i 6 „za 7-ką”... Ogólnie: generacja= (ilość składowych dominiki)
Praca ta zajęła mi całe popołudnie a komputerowi całą noc
i nie wiem komu mam wystawic fakture :)
Gratuluję wydajności w pisaniu. Mi to idzie znaaAaacznie wolniej. Co do faktury:
jeśli znajdziesz jakiegoś sponsora – to pamiętaj i o mnie!!! (mam mnóstwo nie
popłaconych rachunków...)
Reasumując: rzeszoto WYKLUCZA znaczną część liczb złożonych – ale, niestety nie
WSZYSTKIE. Natomiast NIE „gubi” żadnej ze ścieżek, na której leżą liczby
pierwsze: pod tym względem jest „kompletne”! Znacznego spadku wydajności, przy
wyższych generacjach – spodziewałem się, i sygnalizowałem to. Ale jeśli jesteśmy
przy „wyższych generacjach”: to znasz jakąś LEPSZĄ metodę? No ale być może
KTOŚ-COŚ jeszcze znajdzie, jakiś sposób uzupełniający, albo równie szybki, a
„komplementarny” – i połączenie ich „na krzyż” – pozwoli otrzymać narzędzie o b.
dużej wydajności...
Co do tego, wykonanego przez Ciebie „kawału solidnej, nikomu niepotrzebnej
roboty” – to czy byłbyś łaskawy gdzieś WwWywiesić jej efekt, czyli kod / arkusz
/ program (w mathematice?). Dałbym link na swojej stroniczce. Czy też może Twój
produkt jest zbyt „tajny”? Jeśli nie, to dodaj jaki-taki opis, wpisz copyrajty,
etc. – i WwWydrukuj!
Wsród liczb generowanych przez algorytm opisany w pkt1 ( zwanym
rzeszotem) znajduje się conajwyżej 5 liczb pierwszych.
Chyba Tw. Takamury?! - bowiem nigdy czegoś takiego nie przyznam, tym bardziej,
że jest ono BŁĘDNE, nie czytałeś? Wszak pisałem, i to drukowanymi literami: już
Dirichlet przedstawił dowód, na NIESKOŃCZONĄ ich ilość. No, chyba że mowa o
ŚREDNIEJ zawartości w pierwszych 18-tu generacjach. Czyli... 27,8 %? Całkiem
nieźle, a nawet: re-we-la-cyj-nie!!
Jak ktoś bedzie grymasił gdzie dowód, to się mu wyjaśni, że przecież
Fermat też tylko przypuszczał a jednak nazwano to Wielkim Twierdzeniem
- a więc powiedz: ileż to naliczyłeś tych „moich” liczb – zussamen, do kupy?
Jeśli w gałęziach jest ich średnio po 5, zaś „licząc od dołu” ilość gałęzi
rośnie ~ WYKŁADNICZO... A może pamiętasz o tym, iż SŁYNNE, obecnie pilnie (patrz
GIMPS) poszukiwane liczby Marsenne’a znalazły się dotąd jedynie w liczbie ~ 43?
Mój „wynik” wygląda przy tym, jak Mt Everest, przy garstce piachu. No a
przypomnij sobie jeszcze CO takiego TWIERDZIŁ Marsenne...
Gdybyś chciał dokonać bardziej wiarygodnej weryfikacji, o charakterze, hm,
„statystycznym” to wyprodukuj łaskawie równanie końcowe, dla jakiejś wysokiej
generacji, a następnie, już tylko w owym równaniu, zmieniając faktor od jedynki,
do (d-1) – policzył byś frekwencję (otrzymane L. pierwsze)/(wszystkie
„wyprodukowane”) - czyli coś, co można by uznać za „współczynnik dla samego
czubka gałęzi”. Ewentualnie powtórz to dla kilku innych, dość dowolnie wybranych
„równań końcowych”... Wszak „na czubach gałęzi” – frekwencja będzie najniższa!
Ale weź też pod uwagę to, że np. „zwykłe losowanie spośród nieparzystych” – już
dla liczb ~200 cyfrowych (10-tnie) daje prawdopodobieństwo trafienia
ok. 0,43%! – no, ale może znasz jakąś lepszą metodę...
Tak czy siak – dziękuję za udział! (c)RaSz
PS.: o co chodzi z tymi „baaaardzo ciekawymi liczbami (1 + 10^2^(i-2)
i=2,3...)” – bo nie zakumałem? Wszak jedynkę, jako wartość „odźwiernej” – bardzo
starannie „zablokowałem”, w sposób brutalny, i zapewne - dość mało elegancki.
Więc jak ona się tu znalazła?