47 lines
1 KiB
Text
47 lines
1 KiB
Text
OPTION STRICT: OPTION DEFINT
|
|
VAR MAX_G = 4000, MAX_P = 1000000
|
|
VAR ROOT_MAX_P = FLOOR(SQR(MAX_P))
|
|
VAR HALF_MAX_G = MAX_G DIV 2
|
|
VAR G[MAX_G + 1], P[MAX_P + 1]
|
|
VAR I, J
|
|
CLS: GCLS
|
|
P[0] = FALSE: P[1] = 0: P[2] = TRUE
|
|
FOR I = 4 TO MAX_P STEP 2 P[I] = FALSE: NEXT
|
|
FOR I = 3 TO MAX_P STEP 2 P[I] = TRUE: NEXT
|
|
FOR I = 3 TO ROOT_MAX_P STEP 2
|
|
IF P[I] THEN
|
|
FOR J = I * I TO MAX_P STEP I
|
|
P[J] = FALSE
|
|
NEXT
|
|
ENDIF
|
|
NEXT
|
|
FOR I = 1 TO MAX_G G[I] = 0: NEXT
|
|
G[4] = 1 ' 4 is the only sum of 2 even primes
|
|
FOR I = 3 TO HALF_MAX_G STEP 2
|
|
IF P[I] THEN
|
|
INC G[I + 1]
|
|
FOR J = I + 2 TO MAX_G - 1
|
|
IF P[J] THEN
|
|
INC G[I + 1]
|
|
ENDIF
|
|
NEXT
|
|
ENDIF
|
|
NEXT
|
|
VAR C = 0
|
|
FOR I = 4 TO 202 STEP 2
|
|
PRINT FORMAT$("%3D", G[I]),
|
|
INC C
|
|
IF C == 10 THEN PRINT: C = 0: ENDIF
|
|
NEXT
|
|
VAR GM = 0
|
|
FOR I = 3 TO MAX_P DIV 2 STEP 2
|
|
IF P[I] THEN
|
|
IF P[MAX_P - I] THEN INC GM: ENDIF
|
|
ENDIF
|
|
NEXT
|
|
PRINT FORMAT$("G(%D): ", MAX_P); GM
|
|
FOR I = 2 TO MAX_G - 10 STEP 10
|
|
FOR J = 1 TO I + 8 STEP 2
|
|
GPSET I DIV 10, 240-G[J],RGB(255,255,255)
|
|
NEXT
|
|
NEXT
|