奇素数と整数に対して、
のときは mod pで平方剰余
のときそうでない
性質
で
※ になる場合として、もありうる。この場合は xは平方剰余ではないので注意(ここが legendre記号との違い
原理はよくわかってないが、次のプログラムででのjacobi 記号を求めることができる。sageにもjacobi_symbol
があるし、gmpy2にもjacobi
がある
# https://rosettacode.org/wiki/Jacobi_symbol#Python def jacobi(a, n): assert n > 0 assert n % 2 == 1 a %= n result = 1 while a != 0: while a % 2 == 0: a = a//2 n_mod_8 = n % 8 if n_mod_8 in (3, 5): result = -result a, n = n, a if a % 4 == 3 and n % 4 == 3: result = -result a %= n if n == 1: return result else: return 0