wykazanie pierwszości liczby

Podzielność. Reszty z dzielenia. Kongruencje. Systemy pozycyjne. Równania diofantyczne. Liczby pierwsze i względnie pierwsze. NWW i NWD.
eMaerthin
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 12 paź 2011, o 19:03
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 10 razy

wykazanie pierwszości liczby

Post autor: eMaerthin »

Pomyślcie: co wiemy o liczbie \(\displaystyle{ n=11!+1}\) ?
Otóż znamy dokładny rozkład liczby \(\displaystyle{ n-1}\), nawet został tak ładnie kanonicznie wypisany wyżej.

Więc możemy skorzystać z testu pierwszości Lucasa ()

Jak czytamy w definicji testu, musimy znaleźć liczbę całkowitą \(\displaystyle{ a: 1<a<n}\), która:
1. po pierwsze da
\(\displaystyle{ a^{n-1}\equiv1\pmod{n}}\)
2. a dla każdego dzielnika \(\displaystyle{ q}\) liczby \(\displaystyle{ n-1}\) da
\(\displaystyle{ a^{\frac{n-1}{q}}\not\equiv1\pmod{n}}\)

Taka liczba \(\displaystyle{ a}\) jest po prostu generatorem grupy multiplikatywnej \(\displaystyle{ (\mathbb{Z}/n\mathbb{Z})*}\).
Każda liczba pierwsza ma sporo takich generatorów (tyle co niereszt kwadratowych czyli \(\displaystyle{ \frac{n-1}{2}}\)), więc jest spora szansa że trafimy losując jakieś \(\displaystyle{ a}\). Spróbujmy np. \(\displaystyle{ a=5}\):
no niestety, co prawda \(\displaystyle{ 5^{n-1}\equiv1\pmod{n}}\), ale \(\displaystyle{ 5^{\frac{n-1}{2}}\equiv1\pmod{n}}\) wbrew temu co ma być.

Swoją drogą warto zauważyć, że dla liczb \(\displaystyle{ n=k!+1}\) nie trzeba sprawdzać wszystkich dzielników liczby \(\displaystyle{ n-1}\) a tylko te z zakresu od \(\displaystyle{ 2}\) do \(\displaystyle{ k}\). Pomyślcie dlaczego
Ponadto wystarczy sprawdzać tylko dzielniki pierwsze, a więc dla naszego przypadku będzie to zbiór \(\displaystyle{ A=\{2,3,5,7,11\}}\). Oczywiście mam na myśli obliczanie wartości \(\displaystyle{ a^{\frac{n-1}{q}}: q\in A}\).
Ukryta treść:    
tatteredspire
Użytkownik
Użytkownik
Posty: 716
Rejestracja: 2 wrz 2009, o 21:59
Płeć: Mężczyzna
Podziękował: 83 razy
Pomógł: 74 razy

wykazanie pierwszości liczby

Post autor: tatteredspire »

eMaerthin, jeśli dobrze rozumiem, to nawet wiedząc o tym (sam tego nie sprawdzałem, bazuję na informacji, którą podałeś), że najmniejszym "świadkiem pierwszości" liczby \(\displaystyle{ 11!+1}\) jest \(\displaystyle{ a=26}\) (choć "trafić" na tę liczbę chyba nie tak łatwo), to trzeba by wykazać, że jednocześnie \(\displaystyle{ 26^{11!}\equiv1\pmod{11!+1}}\) oraz \(\displaystyle{ 26^{\frac{11!}{2}}\not\equiv1\pmod{11!+1}}\) oraz \(\displaystyle{ 26^{\frac{11!}{3}}\not\equiv1\pmod{11!+1}}\) oraz \(\displaystyle{ 26^{\frac{11!}{5}}\not\equiv1\pmod{11!+1}}\) oraz \(\displaystyle{ 26^{\frac{11!}{7}}\not\equiv1\pmod{11!+1}}\) oraz \(\displaystyle{ 26^{\frac{11!}{11}}\not\equiv1\pmod{11!+1}}\)

Jest sens wykazywać to bez komputera (takie założenie było w pierwszym poście w tym wątku)? Chyba może się zdarzyć (teoretycznie, nie twierdzę, że tak będzie), że okres w modulo \(\displaystyle{ 26^{11!}\equiv1\pmod{11!+1}}\) będzie zbliżony do \(\displaystyle{ 11!+1}\), czyli aby wykazać przystawanie trzeba by było (w pesymistycznym przypadku) wyznaczać reszty z dzielenia \(\displaystyle{ 26^{1},26^{2},...,26^{11!+1}}\) przez \(\displaystyle{ 11!+1}\)\(\displaystyle{ 11!+1}\) - razy, podobnie w tamtych w których przystawanie ma nie zachodzić. Chyba że jest jakieś modulo "na skróty", by ww. rzeczy wykazać.

Chyba, że źle zrozumiałem Twój pomysł, w takim razie, jeśli możesz, wskaż błąd w tym, co napisałem w oparciu o Twoją propozycję.
eMaerthin
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 12 paź 2011, o 19:03
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 10 razy

wykazanie pierwszości liczby

Post autor: eMaerthin »

W odpowiedzi spieszę oznajmić, że jest jak to nazwałeś "modulo na skróty"
Oczywiście w dobie komputerów nie ma potrzeby liczyć tego bez komputera, jednak jak teraz znalazłem w internecie w polskiej literaturze jest to tzw. Certyfikat Pratta jeśli wierzyć wikipedii ()
Certyfikat Pratta został "wynaleziony" w latach 70. a więc komputery jako takie były. Jednak w tym przypadku komputer jest jak kalkulator - pomaga Ci szybko podnosić do potęgi. Samo potęgowanie ma małą złożoność, wystarczy wykorzystać algorytm szybkiego potęgowania modulo.
Załóżmy, że chcesz policzyć
\(\displaystyle{ 26^{\frac{11!}{2}}=26^{19958400}\pmod{11!+1}}\)
Pierwsza myśl - ojej! jaki duży wykładnik!
Druga myśl: Zaraz, zaraz... a gdyby tak przedstawić go w postaci binarnej?
\(\displaystyle{ 19958400=1001100001000101010000000_{(2)}}\)
Dużo cyferek? Ale to oznacza, że jak wyznaczysz
\(\displaystyle{ 26^{2^7}, 26^{2^9}, 26^{2^{11}}, 26^{2^{15}}, 26^{2^{20}}, 26^{2^{21}},26^{2^{24}}}\) wszystkie \(\displaystyle{ \pmod{11!+1}}\) to policzysz, że \(\displaystyle{ 26^{11!/2}=26^{2^7}\cdot26^{2^9}\cdot26^{2^{11}}\cdot26^{2^{15}}\cdot26^{2^{20}}\cdot26^{2^{21}}\cdot26^{2^{24}}\pmod{11!+1}}\)
Każda z tych liczb ma co najwyżej 8 cyfr, więc podczas obliczeń będziesz musiał co najwyżej mnożyć przez siebie 8-cyfrowe liczby co nie jest niewykonalne dla ucznia szkoły podstawowej na kartce papieru, a potem robić modulo przez 8 cyfrową liczbę.
Jak widzisz rachunki są żmudne, i trzeba to powtórzyć dla wykładników \(\displaystyle{ \frac{11!}{3}}\) i pozostałych które wymieniłeś, lecz do tego wszystkiego wystarczy jedynie znać \(\displaystyle{ 26^{2^k}}\) gdzie \(\displaystyle{ k\in\{0,1,\dots,24\}}\) czyli można na początku policzyć na kartce te 25 wartości, a potem tylko mnożyć te, które trzeba. A jak? Wykorzystując następujący wzór:
\(\displaystyle{ 26^{2^0}=26}\)
\(\displaystyle{ 26^{2^{k+1}}\equiv(26^{2^k})^2\pmod{n}}\)
ODPOWIEDZ