Next special primes: Difference between revisions
Content added Content deleted
(add FreeBASIC) |
|||
Line 480: | Line 480: | ||
</pre> |
</pre> |
||
=={{header|Nim}}== |
|||
<lang Nim>import strutils, sugar |
|||
func isPrime(n: Positive): bool = |
|||
if (n and 1) == 0: return n == 2 |
|||
var m = 3 |
|||
while m * m <= n: |
|||
if n mod m == 0: return false |
|||
inc m, 2 |
|||
result = true |
|||
iterator nextSpecialPrimes(lim: Positive): int = |
|||
assert lim >= 3 |
|||
yield 2 |
|||
yield 3 |
|||
var last = 3 |
|||
var lastGap = 1 |
|||
for n in countup(5, lim, 2): |
|||
if not n.isPrime: continue |
|||
if n - last > lastGap: |
|||
lastGap = n - last |
|||
last = n |
|||
yield n |
|||
let list = collect(newSeq, for p in nextSpecialPrimes(1050): p) |
|||
echo "List of next special primes less than 1050:" |
|||
echo list.join(" ")</lang> |
|||
{{out}} |
|||
<pre>List of next special primes less than 1050: |
|||
2 3 5 11 19 29 41 59 79 101 127 157 191 227 269 313 359 409 461 521 587 659 733 809 887 967 1049</pre> |
|||
=={{header|Pascal}}== |
=={{header|Pascal}}== |