RosettaCodeData/Task/Earliest-difference-between-prime-gaps/Phix/earliest-difference-between-prime-gaps.phix
2026-02-01 16:33:20 -08:00

33 lines
1 KiB
Text

with javascript_semantics
constant limit = iff(platform()=JS?1e7:1e8),
gslim = 250
sequence primes = get_primes_le(limit*4),
gapstarts = repeat(0,gslim)
for i=2 to length(primes) do
integer gap = primes[i]-primes[i-1]
if gapstarts[gap]=0 then
gapstarts[gap] = primes[i-1]
end if
end for
integer pm = 10, gap1 = 2
while true do
while gapstarts[gap1]=0 do gap1 += 2 end while
integer start1 = gapstarts[gap1],
gap2 = gap1 + 2
if gapstarts[gap2]=0 then
gap1 = gap2 + 2
else
integer start2 = gapstarts[gap2],
diff = abs(start2 - start1)
if diff>pm then
printf(1,"Earliest difference >%,d between adjacent prime gap starting primes:\n",{pm})
printf(1,"Gap %d starts at %,d, gap %d starts at %,d, difference is %,d.\n\n",
{gap1, start1, gap2, start2, diff})
if pm=limit then exit end if
pm *= 10
else
gap1 = gap2
end if
end if
end while