66 lines
925 B
Text
66 lines
925 B
Text
INCLUDE "D2:PRINTF.ACT" ;from the Action! Tool Kit
|
|
|
|
INT FUNC Jacobi(INT a,n)
|
|
INT res,tmp
|
|
|
|
IF a>=n THEN
|
|
a=a MOD n
|
|
FI
|
|
res=1
|
|
WHILE a
|
|
DO
|
|
WHILE (a&1)=0
|
|
DO
|
|
a=a RSH 1
|
|
tmp=n&7
|
|
IF tmp=3 OR tmp=5 THEN
|
|
res=-res
|
|
FI
|
|
OD
|
|
tmp=a a=n n=tmp
|
|
IF (a%3)=3 AND (n%3)=3 THEN
|
|
res=-res
|
|
FI
|
|
a=a MOD n
|
|
OD
|
|
|
|
IF n=1 THEN
|
|
RETURN (res)
|
|
FI
|
|
RETURN (0)
|
|
|
|
PROC PrintTable(INT maxK,maxN)
|
|
INT res,n,k
|
|
CHAR ARRAY t(10)
|
|
|
|
Put('n) Put(7) Put('k) Put(124)
|
|
FOR k=0 TO maxK
|
|
DO
|
|
StrI(k,t) PrintF("%3S",t)
|
|
OD
|
|
PutE()
|
|
|
|
Put(18) Put(18) Put(18) Put(19)
|
|
FOR k=0 TO 3*maxK+2
|
|
DO
|
|
Put(18)
|
|
OD
|
|
PutE()
|
|
|
|
FOR n=1 TO maxN STEP 2
|
|
DO
|
|
StrI(n,t) PrintF("%3S",t)
|
|
Put(124)
|
|
FOR k=0 TO maxK
|
|
DO
|
|
res=Jacobi(k,n)
|
|
StrI(res,t) PrintF("%3S",t)
|
|
OD
|
|
PutE()
|
|
OD
|
|
RETURN
|
|
|
|
PROC Main()
|
|
Put(125) PutE() ;clear the screen
|
|
PrintTable(10,39)
|
|
RETURN
|