41 lines
806 B
Text
41 lines
806 B
Text
fastfunc nextPrimeOdd n .
|
|
i = n + 2
|
|
repeat
|
|
j = 3
|
|
while j <= sqrt i and i mod j <> 0
|
|
j += 2
|
|
.
|
|
until j > sqrt i
|
|
i += 2
|
|
.
|
|
return i
|
|
.
|
|
lastPrime = 3
|
|
len gapStarts[] 1e7
|
|
#
|
|
func findGapStart gap .
|
|
if gapStarts[gap] <> 0 : return gapStarts[gap]
|
|
repeat
|
|
prev = lastPrime
|
|
lastPrime = nextPrimeOdd lastPrime
|
|
diff = lastPrime - prev
|
|
if gapStarts[diff] = 0 : gapStarts[diff] = prev
|
|
until gap = diff
|
|
.
|
|
return prev
|
|
.
|
|
#
|
|
gap = 2
|
|
pm = 10
|
|
repeat
|
|
start1 = findGapStart gap
|
|
start2 = findGapStart (gap + 2)
|
|
diff = abs (start2 - start1)
|
|
if diff > pm
|
|
print "> " & pm & ": gaps " & gap & "/" & gap + 2 & " range " & start1 & "-" & start2 & " (" & diff & ")"
|
|
pm *= 10
|
|
else
|
|
gap += 2
|
|
.
|
|
until pm = 1e7
|
|
.
|