Jacobi symbol: Difference between revisions

Content deleted Content added
Hout (talk | contribs)
→‎{{header|Haskell}}: Added a variant and a tabulation.
Hout (talk | contribs)
→‎{{header|Haskell}}: Replaced a do with a (let ... in ...) (No monad used or needed here)
Line 258: Line 258:
jacobi 0 1 = 1
jacobi 0 1 = 1
jacobi 0 _ = 0
jacobi 0 _ = 0
jacobi a n = do
jacobi a n =
let a_mod_n = rem a n
let a_mod_n = rem a n
if even a_mod_n
in if even a_mod_n
then case rem n 8 of
then case rem n 8 of
1 -> jacobi (div a_mod_n 2) n
1 -> jacobi (div a_mod_n 2) n
3 -> negate $ jacobi (div a_mod_n 2) n
3 -> negate $ jacobi (div a_mod_n 2) n
5 -> negate $ jacobi (div a_mod_n 2) n
5 -> negate $ jacobi (div a_mod_n 2) n
7 -> jacobi (div a_mod_n 2) n
7 -> jacobi (div a_mod_n 2) n
else if rem a_mod_n 4 == 3 && rem n 4 == 3
else if rem a_mod_n 4 == 3 && rem n 4 == 3
then negate $ jacobi n a_mod_n
then negate $ jacobi n a_mod_n
else jacobi n a_mod_n</lang>
else jacobi n a_mod_n</lang>