Jacobi symbol: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 1,669:
15 0 1 1 0 1 0 0 -1 1 0
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}}==
338

edits