Symbol Jacobiego

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Symbol Jacobiego – uogólnienie symbolu Legendre’a na liczby nieparzyste niekoniecznie pierwsze: jeśli rozkład n na czynniki pierwsze to p1c1p2c2pkck, to symbol Jacobiego jest równy przez symbol Legendre’a:

(an)=(ap1)c1(ap2)c2(apk)ck

Można zauważyć, że jeśli n jest pierwsze, symbol Jacobiego jest równy symbolowi Legendre’a.

Własności:

Jeśli a=bmodn, to (an)=(bn)
(an)=0 wtedy i tylko wtedy, gdy a i n nie są względnie pierwsze
(abn)=(an)(bn)
(amn)=(am)(an)
(1n)=1
(1n)=1 jeśli n=1mod4
(1n)=1 jeśli n=3mod4
(2n)=1 jeśli n=1mod8 lub n=7mod8
(2n)=1 jeśli n=3mod8 lub n=5mod8

Zachodzi też odpowiednio uogólnione prawo wzajemności reszt kwadratowych:

(mn)=(nm)(1)(m1)(n1)4

Choć w definicji symbolu Jacobiego występuje faktoryzacja, istnieje jednak szybki algorytm obliczania go bez użycia faktoryzacji. Zauważmy, że (y nieparzyste):

(2xyn)=(2xn)(yn)=(2n)x(ny)(1)(n1)(y1)/4=(2n)x(nmodyy)(1)(n1)(y1)/4=(nmodyy)(1)(n1)(x(n+1)+2(y1))/8

Na podstawie tego wzoru można zbudować rekurencyjny algorytm (wszystkie dzielenia i reszty modulo z wyjątkiem nmody to w rzeczywistości proste operacje bitowe):

Symbol-Jacobiego(a,n)
  if even(n)
    throw Błąd
  if a == 0
    return 0
  if a == 1
    return 1
  x = 0
  y = a
  while even(y)
    y = y / 2
    x = x + 1
  if odd(x) and (n mod 8 == 3 or n mod 8 == 5)
    wynik = -1
  else
    wynik = 1
  if n mod 4 == 3 and y mod 4 == 3
    wynik = -wynik
  if y == 1
    return wynik
  else
    return wynik * Symbol-Jacobiego(n mod y, y)

Linki zewnętrzne

Szablon:Teoria liczb