Jacobi symbol: Difference between revisions

Content added Content deleted
(Added Sidef)
Line 354: Line 354:
(- (jacobi n a-mod-n))
(- (jacobi n a-mod-n))
(jacobi n a-mod-n)))))))</lang>
(jacobi n a-mod-n)))))))</lang>

=={{header|Sidef}}==

Also built-in as '''kronecker(n,k)'''.

<lang ruby>func jacobi(n, k) {

assert(k > 0, "#{k} must be positive")
assert(k.is_odd, "#{k} must be odd")

var t = 1
while (n %= k) {
var v = n.valuation(2)
t *= (-1)**v if (k%8 ~~ [3,5])
n >>= v
(n,k) = (k,n)
t = -t if ([n%4, k%4] == [3,3])
}

k==1 ? t : 0
}

for n in (0..50), k in (0..50) {
assert_eq(jacobi(n, 2*k + 1), kronecker(n, 2*k + 1))
}</lang>


=={{header|zkl}}==
=={{header|zkl}}==