Jacobi symbol: Difference between revisions
Content deleted Content added
→{{header|Haskell}}: Added a variant and a tabulation. |
→{{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 = |
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> |
||