Skip to content

JacobiSymbol ​

The Jacobi symbol (n/m), generalising the Legendre symbol to composite m.

✓ checked against that system · ! checked, with disagreements (hover a chip)WikipediaJacobi symbolMathWorldJacobiSymbolWikidataQ241015Wolfram LanguageJacobiSymbol✓Rosetta CodeJacobi symbol
JacobiSymbol(n, m)the Jacobi symbol (nm)\left(\frac{n}{m}\right).
SageMathjacobi_symbol(n, m)SymPyjacobi_symbol(n, m)Juliajacobi_symbol(ZZ(n), ZZ(m))
Typed signatures
TypePackageApplies
(integer, integer) -> integercompute-enginealways

Domain: Number theory

Details
  • Generalizes the Legendre symbol from prime mm to any odd mm, by multiplying the Legendre symbols of mm's prime factors.
  • 0 whenever nn and mm share a factor.
  • Completely multiplicative in the top argument: (am)(bm)=(abm)\left(\frac{a}{m}\right)\left(\frac{b}{m}\right)=\left(\frac{ab}{m}\right).
  • By convention (n1)=1\left(\frac{n}{1}\right)=1 for every nn.
  • Unlike the Legendre symbol, (nm)=1\left(\frac{n}{m}\right)=1 doesn't imply nn is a quadratic residue mod mm when mm is composite.

Plot

Examples

Basic #

0 whenever n and m share a factor

live ↗
InJacobiSymbol(10,5)\mathrm{JacobiSymbol}(10, 5)Out00

3 is not a quadratic residue mod 5 (the residues are 1 and 4)

live ↗
InJacobiSymbol(3,5)\mathrm{JacobiSymbol}(3, 5)Out−1-1
live ↗
InJacobiSymbol(1 001,9 907)\mathrm{JacobiSymbol}(1\,001, 9\,907)Out−1-1
Scope #

Threads element-wise over a list, as Wolfram's Listable heads do

live ↗
InJacobiSymbol([2,3,5,7,11],3)\mathrm{JacobiSymbol}(\bigl\lbrack2, 3, 5, 7, 11\bigr\rbrack, 3)Out[−1,0,−1,1,−1]\bigl\lbrack-1, 0, -1, 1, -1\bigr\rbrack

Larger arguments: 1010+110^{10}+1 against the 1000th prime, 7919

live ↗
InJacobiSymbol(1010+1,NthPrime(1 000))\mathrm{JacobiSymbol}(10^{10}+1, \mathrm{NthPrime}(1\,000))Out11

Threads over a list of odd moduli; 00 where gcd⁡(−3,n)>1\gcd(-3,n)>1

live ↗
InJacobiSymbol(−3,[1,3,5,7])\mathrm{JacobiSymbol}(-3, \bigl\lbrack1, 3, 5, 7\bigr\rbrack)Out[1,0,−1,1]\bigl\lbrack1, 0, -1, 1\bigr\rbrack
Properties #

Completely multiplicative in the top argument: (a/m)(b/m)=(ab/m)(a/m)(b/m)=(ab/m)

live ↗
InJacobiSymbol(3,7)JacobiSymbol(5,7)=JacobiSymbol(3×5,7)\mathrm{JacobiSymbol}(3, 7)\mathrm{JacobiSymbol}(5, 7)=\mathrm{JacobiSymbol}(3×5, 7)OutTrue\mathrm{True}

Quadratic reciprocity: (p/q)(q/p)=(−1)p−12q−12(p/q)(q/p)=(-1)^{\frac{p-1}2\frac{q-1}2}, −1-1 as 3≡7≡3(mod4)3\equiv7\equiv3\pmod4

live ↗
InJacobiSymbol(3,7)JacobiSymbol(7,3)\mathrm{JacobiSymbol}(3, 7)\mathrm{JacobiSymbol}(7, 3)Out−1-1

(−1/m)=(−1)(m−1)/2(-1/m)=(-1)^{(m-1)/2}

live ↗
InJacobiSymbol(−1,7)\mathrm{JacobiSymbol}(-1, 7)Out−1-1

−5≡1(mod3)-5\equiv1 \pmod 3 is a square, so the symbol is 11

live ↗
InJacobiSymbol(−5,3)\mathrm{JacobiSymbol}(-5, 3)Out11

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

−4≡2(mod3)-4\equiv2 \pmod 3 is a non-residue

live ↗
InJacobiSymbol(−4,3)\mathrm{JacobiSymbol}(-4, 3)Out−1-1

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

A multiple of the modulus gives 00

live ↗
InJacobiSymbol(−3,3)\mathrm{JacobiSymbol}(-3, 3)Out00

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

−2≡1-2\equiv1, a residue mod 3

live ↗
InJacobiSymbol(−2,3)\mathrm{JacobiSymbol}(-2, 3)Out11

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

−1-1 is not a square mod 3, since 3≡3(mod4)3\equiv3 \pmod 4

live ↗
InJacobiSymbol(−1,3)\mathrm{JacobiSymbol}(-1, 3)Out−1-1

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

Zero is never coprime to the modulus, so the symbol vanishes

live ↗
InJacobiSymbol(0,3)\mathrm{JacobiSymbol}(0, 3)Out00

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

One is always a residue

live ↗
InJacobiSymbol(1,3)\mathrm{JacobiSymbol}(1, 3)Out11

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

22 is a non-residue mod 3

live ↗
InJacobiSymbol(2,3)\mathrm{JacobiSymbol}(2, 3)Out−1-1

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

Shares a factor with the modulus: 00

live ↗
InJacobiSymbol(3,3)\mathrm{JacobiSymbol}(3, 3)Out00

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

A perfect square gives 11 when coprime

live ↗
InJacobiSymbol(4,3)\mathrm{JacobiSymbol}(4, 3)Out11

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

5≡25\equiv2, a non-residue

live ↗
InJacobiSymbol(5,3)\mathrm{JacobiSymbol}(5, 3)Out−1-1

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

Another multiple of 3, another 00

live ↗
InJacobiSymbol(6,3)\mathrm{JacobiSymbol}(6, 3)Out00

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

7≡1(mod3)7\equiv1 \pmod 3, so 11

live ↗
InJacobiSymbol(7,3)\mathrm{JacobiSymbol}(7, 3)Out11

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

8≡28\equiv2, so −1-1

live ↗
InJacobiSymbol(8,3)\mathrm{JacobiSymbol}(8, 3)Out−1-1

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

Every third value in aa drops to 00

live ↗
InJacobiSymbol(9,3)\mathrm{JacobiSymbol}(9, 3)Out00

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

The pattern 1,−1,01,-1,0 repeats with period 3 in aa

live ↗
InJacobiSymbol(10,3)\mathrm{JacobiSymbol}(10, 3)Out11

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

gcd⁡(−5,5)=5\gcd(-5,5)=5, so the symbol is 00

live ↗
InJacobiSymbol(−5,5)\mathrm{JacobiSymbol}(-5, 5)Out00

Known value · Wolfram MathematicalFunctionData, JacobiSymbol

Possible issues #

By convention the symbol is 1 whenever m=1m=1

live ↗
InJacobiSymbol(0,1)\mathrm{JacobiSymbol}(0, 1)Out11

(2/15)=(2/3)(2/5)=1(2/15)=(2/3)(2/5)=1, yet 2 is not a square mod 15

live ↗
InJacobiSymbol(2,15)\mathrm{JacobiSymbol}(2, 15)Out11
About
Examples28
Checked againstWolfram Language 28 agreeSageMath 28 agreeSymPy 28 agreemathlib4 25 agree2 errorJulia 27 agree
CrosswalkWikipediaMathWorldWikidataWolfram LanguageSageMathSymPyJuliaRosetta Code

Implementation

mappedsympypackages/oracle/src/mappings.ts

SymPy's jacobi_symbol raises unless the lower argument is odd and positive.

mappedsagepackages/oracle/src/mappings.ts
mappedjuliapackages/oracle/src/mappings.ts
mappedmathlib4packages/oracle/src/mappings.ts

Mathlib's jacobiSym a b is the product of Legendre symbols over the prime factors of b, for any natural b: at an even b the factor at 2 is the quadratic character of ZMod 2, not the Kronecker symbol, so only an odd positive b is comparable.

See also: PowerMod, LegendreSymbol, KroneckerSymbol