Neighbour primes: Difference between revisions

(Added Perl)
Line 339:
println(filter(isneiprime, primes(500)))
</lang>{{out}}<pre>[3, 5, 7, 13, 19, 67, 149, 179, 229, 239, 241, 269, 277, 307, 313, 397, 401, 419, 439, 487]</pre>
 
=={{header|Nim}}==
<lang Nim>import strformat, sugar
 
const
Max1 = 499 # Maximum for first prime.
Max2 = 251_000 # Maximum for sieve (in fact 250_999 = 499 * 503 + 2).
 
# Sieve of Erathosthenes: false (default) is composite.
var composite: array[3..Max2, bool] # Ignore 2 as 2 * 3 + 8 is not prime.
var n = 3
while true:
let n2 = n * n
if n2 > Max2: break
if not composite[n]:
for k in countup(n2, Max2, 2 * n):
composite[k] = true
inc n, 2
 
template isPrime(n: int): bool = not composite[n]
 
let primes = collect(newSeq):
for n in countup(3, Max2, 2):
if n.isPrime: n
 
var p = primes[0]
var i = 0
while p <= Max1:
inc i
let q = primes[i]
if (p * q + 2).isPrime:
echo &"{p:3} {q:3} {p*q+2:6}"
p = q</lang>
 
{{out}}
<pre> 3 5 17
5 7 37
7 11 79
13 17 223
19 23 439
67 71 4759
149 151 22501
179 181 32401
229 233 53359
239 241 57601
241 251 60493
269 271 72901
277 281 77839
307 311 95479
313 317 99223
397 401 159199
401 409 164011
419 421 176401
439 443 194479
487 491 239119</pre>
 
=={{header|PARI/GP}}==
Anonymous user