Quadrat special primes: Difference between revisions

Content added Content deleted
(added AWK)
Line 301: Line 301:
12323 12647 12791 13367 13691 14591 14627 14771 15671
12323 12647 12791 13367 13691 14591 14627 14771 15671
</pre>
</pre>

=={{header|Nim}}==
<lang Nim>import math, strutils, sugar

func isPrime(n: Natural): bool =
if n < 2: return false
if n mod 2 == 0: return n == 2
if n mod 3 == 0: return n == 3
var d = 5
while d * d <= n:
if n mod d == 0: return false
inc d, 2
if n mod d == 0: return false
inc d, 4
result = true

const
Max = 16_000
Squares = collect(newSeq):
for n in countup(2, sqrt(Max.float).int, 2): n * n

iterator quadraPrimes(lim: Positive): int =
assert lim >= 3
yield 2
yield 3
var n = 3
block mainloop:
while true:
for square in Squares:
let next = n + square
if next > lim: break mainloop
if next.isPrime:
n = next
yield n
break

echo "Quadrat special primes < 16000:"
var count = 0
for qp in quadraPrimes(Max):
inc count
stdout.write ($qp).align(5), if count mod 7 == 0: '\n' else: ' '</lang>

{{out}}
<pre>Quadrat special primes < 16000:
2 3 7 11 47 83 227
263 587 911 947 983 1019 1163
1307 1451 1487 1523 1559 2459 3359
4259 4583 5483 5519 5843 5879 6203
6779 7103 7247 7283 7607 7643 8219
8363 10667 11243 11279 11423 12323 12647
12791 13367 13691 14591 14627 14771 15671</pre>


=={{header|Perl}}==
=={{header|Perl}}==