Writing a recursive function to compute the Jacobi symbol

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 reply · 3K views
John O' Meara
Messages
325
Reaction score
0
Write a recursive function to compute the Jacobi symbol J(a, n), is defined for relatively prime integers a and n, [tex]a> o, \mbox{ and } n > 0[/tex] by the formula
[tex]J(a, n) = 1 \mbox{ if a = 1, } = J(a/2, n)*(-1)^\frac{n^2-1}{8} \mbox{ if a is even, }[/tex]
[tex]=J(n \% a, a)*(-1)^\frac{(a-1)*(n-1)}{4} \mbox{ otherwise }[/tex]

Code:
int jacobi(int a, int n)
{
   if (a == 1)
     return 1;
   else {
      if ((a % 2) == 0)
          return jacobi(a/2, n)*(pow(-1.0, (n*n-1)/8);
      else
          return jacobi(n % a, a)*(pow(-1.0, ((a-1)*(n-1))/4)); 
    }
 }
 int main() {
  cout << jacobi(5, 7);
   return 0;
 }
I seem not to be able to remember what a relative prime number is? And I don't think I understand the Jacobi function anyway. Any help would be welcome. Thanks in advance.
 
Last edited:
Physics news on Phys.org