Jacobi symbol: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 1,669: | Line 1,669: | ||
15 0 1 1 0 1 0 0 -1 1 0 |
15 0 1 1 0 1 0 0 -1 1 0 |
||
17 0 1 1 -1 1 -1 -1 -1 1 1</pre> |
17 0 1 1 -1 1 -1 -1 -1 1 1</pre> |
||
=={{header|Vlang}}== |
|||
{{trans|Go}} |
|||
<lang vlang>fn jacobi(aa u64, na u64) ?int { |
|||
mut a := aa |
|||
mut n := na |
|||
if n%2 == 0 { |
|||
return error("'n' must be a positive odd integer") |
|||
} |
|||
a %= n |
|||
mut result := 1 |
|||
for a != 0 { |
|||
for a%2 == 0 { |
|||
a /= 2 |
|||
nn := n % 8 |
|||
if nn == 3 || nn == 5 { |
|||
result = -result |
|||
} |
|||
} |
|||
a, n = n, a |
|||
if a%4 == 3 && n%4 == 3 { |
|||
result = -result |
|||
} |
|||
a %= n |
|||
} |
|||
if n == 1 { |
|||
return result |
|||
} |
|||
return 0 |
|||
} |
|||
fn main() { |
|||
println("Using hand-coded version:") |
|||
println("n/a 0 1 2 3 4 5 6 7 8 9") |
|||
println("---------------------------------") |
|||
for n := u64(1); n <= 17; n += 2 { |
|||
print("${n:2} ") |
|||
for a := u64(0); a <= 9; a++ { |
|||
t := jacobi(a, n)? |
|||
print(" ${t:2}") |
|||
} |
|||
println('') |
|||
} |
|||
} |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
n/a 0 1 2 3 4 5 6 7 8 9 |
|||
--------------------------------- |
|||
1 1 1 1 1 1 1 1 1 1 1 |
|||
3 0 1 -1 0 1 -1 0 1 -1 0 |
|||
5 0 1 -1 -1 1 0 1 -1 -1 1 |
|||
7 0 1 1 -1 1 -1 -1 0 1 1 |
|||
9 0 1 1 0 1 1 0 1 1 0 |
|||
11 0 1 -1 1 1 1 -1 -1 -1 1 |
|||
13 0 1 -1 1 1 -1 -1 -1 -1 1 |
|||
15 0 1 1 0 1 0 0 -1 1 0 |
|||
17 0 1 1 -1 1 -1 -1 -1 1 1 |
|||
</pre> |
|||
=={{header|Wren}}== |
=={{header|Wren}}== |