'n kartyat kever. Hany keveres utan all visssza?
'Ekvivalens feladat: mi 2 rendje modulo n+1?

CLS
'primszamsort general
DIM prim(1000)
prim(1) = 2
k = 3
n = 1

primjelolt:
FOR j = 1 TO n
IF INT(k / prim(j)) = k / prim(j) THEN k = k + 1: GOTO primjelolt
IF prim(j) > SQR(k) THEN GOTO ujprim
NEXT j

ujprim:
prim(n + 1) = k
n = n + 1
k = k + 1
IF n < 1000 THEN GOTO primjelolt

'INPUT "Kartyak szama (paros)"; n
n = 2
vissza:
IF n > 1024 THEN END
DIM tenyezo(20)
'elkesziti n es n+1 primtenyezos felbontasat
mm = n: plusz = 0
GOSUB felbont
mm = n + 1: plusz = 1
GOSUB felbont

'legyartja fi(n+1)-t
fi = 1
p = tenyezo(1)
kitevo = 0
FOR i = 1 TO j
IF tenyezo(i) = p THEN kitevo = kitevo + 1 ELSE fi = (p - 1) * fi * p ^ (kitevo - 1): p = tenyezo(i): kitevo = 1
o: NEXT i
fi = (p - 1) * fi * p ^ (kitevo - 1)
LOCATE 24, 70: PRINT fi;


'kiszamolja 2 rendjet
eleje:
m = n + 1
a = 1
k = 0
kk = 0
ketszerez:
k = k + 1
a = a * 2
IF a > m THEN a = a - m
IF a = m - 1 THEN kk = 1
IF a = 1 THEN GOTO ki
GOTO ketszerez

ki:
IF kk = 0 THEN LOCATE 24, 75: PRINT "-";
t$ = STR$(fi / k)
t$ = ":" + RIGHT$(t$, LEN(t$) - 1)
IF fi > k THEN LOCATE 24, 77: PRINT t$;
LOCATE 24, 70: PRINT ""
IF INT(n / 44) = n / 44 THEN LOCATE 1, 60: INPUT r$
n = n + 2: GOTO vissza


END

felbont:
j = 1
m = mm
FOR i = 1 TO 1000
IF m = 1 THEN j = j - 1: GOTO kiir
IF prim(i) > SQR(m) THEN tenyezo(j) = m:  GOTO kiir
j: IF INT(m / prim(i)) = m / prim(i) THEN tenyezo(j) = prim(i): m = m / prim(i): j = j + 1: GOTO j
NEXT i

kiir:
LOCATE 24, 1 + plusz * 35: PRINT mm;
FOR jj = 1 TO j
LOCATE 24, jj * 3 + 3 + plusz * 35: PRINT tenyezo(jj);
NEXT jj

RETURN

