Largest difference between adjacent primes: Difference between revisions

Content added Content deleted
m (→‎{{header|Free Pascal}}: wrong limit, correct to 1E10, TIO.RUN below 60s)
(added AWK)
Line 52: Line 52:
Largest gap between primes up to 1000000: 114 between 492113 and 492227
Largest gap between primes up to 1000000: 114 between 492113 and 492227
Largest gap between primes up to 10000000: 154 between 4652353 and 4652507
Largest gap between primes up to 10000000: 154 between 4652353 and 4652507
</pre>
=={{header|AWK}}==
<lang AWK>
# syntax: GAWK -f LARGEST_DIFFERENCE_BETWEEN_ADJACENT_PRIMES.AWK
# converted from FreeBASIC
BEGIN {
stop = 1000000
champi = 3
champj = 5
i = 5
record = 2
while (i < stop) {
j = next_prime(i)
if (j-i > record) {
champi = i
champj = j
record = j - i
}
i = j
}
printf("The largest difference between adjacent primes < %d is %d between %d and %d\n",stop,record,champi,champj)
exit(0)
}
function next_prime(n, q) { # finds the next prime after n
if (n == 0) { return(2) }
if (n < 3) { return(++n) }
q = n + 2
while (!is_prime(q)) {
q += 2
}
return(q)
}
function is_prime(n, d) {
d = 5
if (n < 2) { return(0) }
if (n % 2 == 0) { return(n == 2) }
if (n % 3 == 0) { return(n == 3) }
while (d*d <= n) {
if (n % d == 0) { return(0) }
d += 2
if (n % d == 0) { return(0) }
d += 4
}
return(1)
}
</lang>
{{out}}
<pre>
The largest difference between adjacent primes < 1000000 is 114 between 492113 and 492227
</pre>
</pre>