User:James in dc/sandbox/Jacobi symbol

sandbox

Jacobi symbol

edit

In algebraic number theory and related branches of mathematics the Jacobi symbol   is defined for all integers   and all positive odd integers  [1]. For   where the   are odd primes[2] the Jacobi symbol is the product of Legendre symbols

 . (and for completeness   is defined to be  )

Properties of the Jacobi symbol

edit

The Legendre symbol   is defined for all integers   and all odd primes   by

 

The properties of the Jacobi symbol are derived from those of the Legendre symbol.[3]

Since   is true for each factor,  

Obviously from the definition  

These imply that   and  

If   then   for every   in the product so   and therefore  

If   then one of the  s divides     and  

If   then every   and   as well.

Differences between Legendre and Jacobi symbols

edit

  for composite   only means that there were an even number of minus signs in the product; it does not mean that   is a quadratic residue  . For prime   it does.

Euler's criterion is not true for composite  . For example   but[4]   See uses, below.

Quadratic reciprocity

edit

First Supplement

edit

Let   where   and  . The values of the Legendre symbols are known:   and  

  if and only if the number of   is odd.

Likewise   is   if and only if the number of   is odd. This shows that

 

which is equivalent to

 

Second Supplement

edit

Let   where   and  . The values of the Legendre symbols are known:   and  

  if and only if the number of   is odd.

Likewise   is   if and only if the number of   is odd. This shows that

 

which is equivalent to

 

Combining with the first supplement gives

 

which is equivalent to

 

Legendre

edit

  must be positive and odd.

Let   where   and  .

In the same way let   where the   and   are prime and   and  .

The values of the inverted Legendre symbols are known:  

  if and only if the number of   is odd

  if and only if the number of   is odd.

 

The sign is negative if and only if the number of   factors is odd, i.e. when both the number of   is odd and the number of   is odd. This shows that

 

which is equivalent to

 

Gauss

edit

  must be positive and odd.

Define the   operator on positive odd   as:

 

This operator is multiplicative  

Let   and  .

For every Legendre symbol in the product it is known that  

 

Gauss' lemma

edit

Gauss's lemma extends to Jacobi symbols. Let   be an odd number and define the sets   and   Then  . For   let  .

Then  .

Zolotarev's lemma

edit

Zolotarev's lemma extends to Jacobi symbols. For   let   be the permutation of the set   (all residue classes, not just the relatively prime ones) induced by multiplication by  . The signature of this permutation is the Jacobi symbol:

 

See here for details and an example.

Calculating the Jacobi symbol

edit

The expression   means any number   satisfying   and   [5]

Repeat these steps until   is 0 or 1. If it is 0, the two original numbers were not relatively prime; if it is 1 the accumulated sign is the value of the Jacobi symbol.

1) if   is negative         I.e. flip the sign if  .

2) If   is even repeatedly divide by 4 until   is odd or is twice an odd number.

In the latter case         I.e. flip the sign if  .

3) If   is odd and positive         I.e. flip the sign if   and  .

A few examples:

 

 

Analysis

edit

Calculating the Jacobi symbol is similar to computing the gcd using the Euclidean algorithm.


 

 
 
 

 


 

   


   
   


Examine the bits in   to find   where
 


 
 
 
 
 
 
 

 


To show the parallel use the notation  for the gcd[6]

 

Lamé’s Theorem (1844) states that the number of   evaluations to compute a gcd is at most five times the number of base-ten digits of the smaller number. The Jacobi calculation does the same sort of recursion[7] but sometimes divides by powers of 4. This has the effect of skipping ahead (the example would stop after the first step), reducing the number of   operations and also reducing the size of the numbers compared to Euclid. In other words, the Lamé bound applies to Jacobi as well.

So, for example 2000-digit numbers will require about twice as many  s as 1000-digit ones. The cost of   may go up with the number of digits.

Machine calculation

edit

The algorithm is well-suited to machine calculations since its running time is   and it requires negligeable storage. A number of authors[8] have published code to evaluate Jacobi. The Lua and C++ routines below replace the recursion with a loop.[9]

function jacobi(a, m)
  assert(m > 0 and m % 2 == 1, "m must be positive and odd")

  local t = 1                      -- returned value

  while true do

    if a == 1 then 
       return t                             -- success t is the Jacobi symbol
    elseif a == 0 then 
       return 0                              -- a and m were not relatively prime
    end

    if a < 0 then
       a = -a                            -- if a is negative set a = |a|
       if m % 4 == 3 then                -- and evaluate (-1|m)
         t = -t
       end
    end
                                           -- a is positive
    local p = 0                       -- power of 2 dividing a
    while a % 2 == 0 do
      p = p + 1
      a = a / 2
    end
    if p % 2 == 1 then                   -- if the power of 2 is odd
      if m % 8 == 3 or m % 8 == 5 then     -- evaluate (2|m)
        t = -t
      end
    end
                                         -- a is odd
    if m % 4 == 3 and a % 4 == 3 then    -- does inverting the symbol
      t = -t                             -- change its sign?
    end 

    local temp = a                       -- next iteration is (m mod a|a)
    a = m % a
    m = temp
end
int jacobi(int a, int m) {
    assert(m > 0 && m % 2 == 1);
    
    int t = 1;      // return value (accumulated sign)
    
    while (1) {

        if (a == 1) return t;        // success 
        if (a == 0) return 0;        // a and m were not coprime

        if (a < 0) {               // if a is negative replace it with the absolute value 
           a = -a;                 // and evaluate (-1|m)
           if (m % 4 == 3) t = -t;     
        }                          // a is positive

        int p = 0;                 // power of 2 dividing a        
        while (a % 2 == 0) {
            a /= 2;
            p++;
        }                          // a is odd
        if (p % 2 == 1)                                  // if the power of 2 was odd
            if (m % 8 == 3 || m % 8 == 5)   t = -t;      // evaluate (2|m)
                                                      
        if (m % 4 == 3 && a % 4 == 3) t = -t;              // evaluate (m|a)

        int temp = a;                                    // next iteration is m mod a over a
        a = m % a;
        m = temp;
    }
}

Uses

edit

The Jacobi symbol is of theoretical interest in number theory,[10] but its main use is computational.[11] Cryptography in particular uses large prime numbers. A number of primality testing and integer factorization algorithms take advantage of the fact that Jacobi symbols can be computed quickly.

Because Euler's criterion is not valid for composite  , the Jacobi symbol can be used to detect composite numbers. Pick a random number   and calculate the Jacobi symbol  . If   then   is composite; this is the basis of the Solovay–Strassen primality test. In some algorithms, such as the Lucas–Lehmer primality test, the value of certain Jacobi symbols is known theoretically[12] and can be used to detect (hardware or software) errors.[13]

An example of a factoring algorithm that uses Jacobi symbols is the continued fraction algorithm[14] To factor  it tries to find numbers satisfying  . This involves constructing a database of primes and quadratic residues which requires multiple Jacobi symbol evaluations.

History

edit

The Legendre symbol was introduced in 1798. It is not practical for calculations because it requires factorization into primes before it can be inverted. Jacobi introduced his symbol in 1837.[15] to facilitate calculation. As explained here Gauss' first proof of quadratic reciprocity[16] considers composite moduli[17] and obtains some special cases of the Jacobi symbol.[18]

Table

edit

(k/n)   for  1≤ k ≤ 30,   1≤ n ≤ 59,   n odd.

k
n
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
3 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0
5 1 −1 −1 1 0 1 −1 −1 1 0 1 −1 −1 1 0 1 −1 −1 1 0 1 −1 −1 1 0 1 −1 −1 1 0
7 1 1 −1 1 −1 −1 0 1 1 −1 1 −1 −1 0 1 1 −1 1 −1 −1 0 1 1 −1 1 −1 −1 0 1 1
9 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0
11 1 −1 1 1 1 −1 −1 −1 1 −1 0 1 −1 1 1 1 −1 −1 −1 1 −1 0 1 −1 1 1 1 −1 −1 −1
13 1 −1 1 1 −1 −1 −1 −1 1 1 −1 1 0 1 −1 1 1 −1 −1 −1 −1 1 1 −1 1 0 1 −1 1 1
15 1 1 0 1 0 0 −1 1 0 0 −1 0 −1 −1 0 1 1 0 1 0 0 −1 1 0 0 −1 0 −1 −1 0
17 1 1 −1 1 −1 −1 −1 1 1 −1 −1 −1 1 −1 1 1 0 1 1 −1 1 −1 −1 −1 1 1 −1 −1 −1 1
19 1 −1 −1 1 1 1 1 −1 1 −1 1 −1 −1 −1 −1 1 1 −1 0 1 −1 −1 1 1 1 1 −1 1 −1 1
21 1 −1 0 1 1 0 0 −1 0 −1 −1 0 −1 0 0 1 1 0 −1 1 0 1 −1 0 1 1 0 0 −1 0
23 1 1 1 1 −1 1 −1 1 1 −1 −1 1 1 −1 −1 1 −1 1 −1 −1 −1 −1 0 1 1 1 1 −1 1 −1
25 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0
27 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0 1 −1 0
29 1 −1 −1 1 1 1 1 −1 1 −1 −1 −1 1 −1 −1 1 −1 −1 −1 1 −1 1 1 1 1 −1 −1 1 0 1
31 1 1 −1 1 1 −1 1 1 1 1 −1 −1 −1 1 −1 1 −1 1 1 1 −1 −1 −1 −1 1 −1 −1 1 −1 −1
33 1 1 0 1 −1 0 −1 1 0 −1 0 0 −1 −1 0 1 1 0 −1 −1 0 0 −1 0 1 −1 0 −1 1 0
35 1 −1 1 1 0 −1 0 −1 1 0 1 1 1 0 0 1 1 −1 −1 0 0 −1 −1 −1 0 −1 1 0 1 0
37 1 −1 1 1 −1 −1 1 −1 1 1 1 1 −1 −1 −1 1 −1 −1 −1 −1 1 −1 −1 −1 1 1 1 1 −1 1
39 1 1 0 1 1 0 −1 1 0 1 1 0 0 −1 0 1 −1 0 −1 1 0 1 −1 0 1 0 0 −1 −1 0
41 1 1 −1 1 1 −1 −1 1 1 1 −1 −1 −1 −1 −1 1 −1 1 −1 1 1 −1 1 −1 1 −1 −1 −1 −1 −1
43 1 −1 −1 1 −1 1 −1 −1 1 1 1 −1 1 1 1 1 1 −1 −1 −1 1 −1 1 1 1 −1 −1 −1 −1 −1
45 1 −1 0 1 0 0 −1 −1 0 0 1 0 −1 1 0 1 −1 0 1 0 0 −1 −1 0 0 1 0 −1 1 0
47 1 1 1 1 −1 1 1 1 1 −1 −1 1 −1 1 −1 1 1 1 −1 −1 1 −1 −1 1 1 −1 1 1 −1 −1
49 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1
51 1 −1 0 1 1 0 −1 −1 0 −1 1 0 1 1 0 1 0 0 1 1 0 −1 1 0 1 −1 0 −1 1 0
53 1 −1 −1 1 −1 1 1 −1 1 1 1 −1 1 −1 1 1 1 −1 −1 −1 −1 −1 −1 1 1 −1 −1 1 1 −1
55 1 1 −1 1 0 −1 1 1 1 0 0 −1 1 1 0 1 1 1 −1 0 −1 0 −1 −1 0 1 −1 1 −1 0
57 1 1 0 1 −1 0 1 1 0 −1 −1 0 −1 1 0 1 −1 0 0 −1 0 −1 −1 0 1 −1 0 1 1 0
59 1 −1 1 1 1 −1 1 −1 1 −1 −1 1 −1 −1 1 1 1 −1 1 1 1 1 −1 −1 1 1 1 1 1 −1

See also

edit

Notes

edit
  1. ^ It is an extension of the Legendre symbol, which is only defined for positive odd prime values of   and is itself extended by the Kronecker symbol, which is defined for all nonzero values of  
  2. ^ positive, but not necessarily distinct
  3. ^ Practically all textbooks on elementary number theory cover this material, e.g. Cohen, Hardy & Wright, Ireland and Rosen, Lemmermeyer.
  4. ^ Note that   and 2 is a residue mod the primes 7 and 23
  5. ^ Typical ranges are   or   Euclid uses the first; Jacobi doesn't care.
  6. ^ Consecutive Fibonacci numbers are used in Lames's proof as they provide an upper bound
  7. ^ Cohen
  8. ^ Riesel p. 285 (Pascal), Cohen
  9. ^ Cohen p 26 gives efficient ways to code the tests mod 2, 4, and 8: e.g. if (a%4 == 3 && m%4 == 3) is the same as if (a & m & 2).
  10. ^ If the top or the bottom argument is held fixed and the other one is allowed to vary it is a real Dirichlet character
  11. ^ See below computing JS
  12. ^ For example a primitive root must be a nonresidue, so its Jacobi symbol will be -1
  13. ^ Lucas–Lehmer does arithmetic modulo the number being tested (the largest prime so far found current record holder has over eighty million bits) and often has to run for weeks at a time
  14. ^ Riesel p. 194ff
  15. ^ Jacobi, C. G. J. (1837). "Über die Kreisteilung und ihre Anwendung auf die Zahlentheorie". Bericht Ak. Wiss. Berlin: 127–136.
  16. ^ Disquisitiones Arithmeticae arts 131-133
  17. ^ (cases 9-14)
  18. ^ He proves e.g. that if the prime   is a quadratic residue mod a composite number   and both are   , then   is a residue mod   This is not the same as   because   being a residue mod   is not the same as  

References

edit

Books

  • Ireland, Kenneth; Rosen, Michael (1990). A Classical Introduction to Modern Number Theory (Second ed.). New York: Springer. ISBN 0-387-97329-X.
  • Lemmermeyer, Franz (2000). Reciprocity Laws: from Euler to Eisenstein. Berlin: Springer. ISBN 3-540-66957-4.
  • Riesel, Hans (1994), Prime Numbers and Computer Methods for Factorization (second edition), Boston: Birkhäuser, ISBN 0-8176-3743-5

Journal articles