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}}== |