45 lines
1.1 KiB
Text
45 lines
1.1 KiB
Text
function gcdp( a as uinteger, b as uinteger ) as uinteger
|
|
if b = 0 then return a
|
|
return gcdp( b, a mod b )
|
|
end function
|
|
|
|
function gcd(a as integer, b as integer) as uinteger
|
|
return gcdp( abs(a), abs(b) )
|
|
end function
|
|
|
|
function jacobi( a as uinteger, n as uinteger ) as integer
|
|
if gcd(a, n)<>1 then return 0
|
|
if a = 1 then return 1
|
|
if a>n then return jacobi( a mod n, n )
|
|
if a mod 2 = 0 then
|
|
if n mod 8 = 1 or n mod 8 = 7 then
|
|
return jacobi(a/2, n)
|
|
else
|
|
return -jacobi(a/2, n)
|
|
end if
|
|
end if
|
|
dim as integer q = (-1)^((a-1)/2 * (n-1)/2)
|
|
return q/jacobi(n, a)
|
|
end function
|
|
|
|
'print a table
|
|
|
|
function padto( i as ubyte, j as integer ) as string
|
|
return wspace(i-len(str(j)))+str(j)
|
|
end function
|
|
|
|
dim as uinteger pn, k, prime(0 to 16) = {3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61}
|
|
dim as string outstr = " k "
|
|
|
|
for k = 1 to 36
|
|
outstr = outstr + padto(2, k)+" "
|
|
next k
|
|
print outstr
|
|
print " n"
|
|
for pn=0 to 16
|
|
outstr= " "+padto( 2, prime(pn) )+" "
|
|
for k = 1 to 36
|
|
outstr = outstr + padto(2, jacobi(k, prime(pn))) + " "
|
|
next k
|
|
print outstr
|
|
next pn
|