Sito kwadratowe

Z testwiki
Wersja z dnia 10:20, 25 lis 2023 autorstwa imported>Tarnoob (Przypisy: szablon)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania

Szablon:Dopracować Sito kwadratowe (ang. Quadratic Sieve) – najszybszy znany algorytm do faktoryzacji liczb, które są krótsze niż 110 cyfr dziesiętnych.[1]

Algorytm

Algorytm ten jest ukonkretnieniem metody sita liczbowego. Załóżmy, że szukamy czynników liczby n.

  1. Szukamy par (ai,bi), takich, że:
    • ai2bi(modn),
    • bi rozkłada się w „bazie czynników” (inaczej „bazie rozkładu”).
  2. Znajdujemy pary (ai1,bi1),(ai2,bi2),...(aik,bik), takie, że:
    • a=j=1...kaij,
    • b=j=1...kbij=c2 dla pewnego c.
  3. Wtedy a2c2, więc jeśli a≢±c, to NWD(a+c,n) jest nowym dzielnikiem liczby n.

Szukanie par

Niech

m=n

i

W(x)=(x+m)2n.

Dla x=0,±1,±2,... liczymy:

ai=x+m,
bi=W(x)=(x+m)2n,

wtedy

biai2.

Z wygenerowanych w ten sposób par należy brać te, dla których bi rozkłada się w bazie rozkładu.

Można też zauważyć, że jeśli

pbi,

to

(x+m)2n(modp),

więc n musi być resztą kwadratową modulo p (wystarczy do bazy czynników brać tylko takie p).

Inne wersje

Istnieją dwie szybsze wersje tego algorytmu występujące pod nazwami:

  1. Wielokrotnie wielomianowe sito kwadratowe (ang. Multiple Polynomial Quadratic Sieve).
  2. Wielokrotnie wielomianowe sito kwadratowe dla podwójnie dużych liczb pierwszych (ang. Double Large Prime Variation of the Multiple Polynomial Quadratic Sieve).

Obecnie najszybszym algorytmem faktoryzacyjnym dla liczb o większych długościach jest algorytm GNFS (ang. General Number Field Sieve; ogólne sito ciała liczbowego)[2]. Inne algorytmy faktoryzacji zostały wyparte przez dwie wyżej wymienione modyfikacje.

Przypisy

Szablon:Przypisy

Szablon:Teoria liczb