Fortunate numbers: Difference between revisions
Content added Content deleted
(Added Go) |
|||
Line 79: | Line 79: | ||
373 379 383 397 401 409 419 421 439 443 |
373 379 383 397 401 409 419 421 439 443 |
||
</pre> |
</pre> |
||
=={{header|Nim}}== |
|||
{{libheader|bignum}} |
|||
Nim doesn’t provide a standard module to deal with big integers. So, we have chosen to use the third party module “bignum” which provides functions to easily find primes and check if a number is prime. |
|||
<lang Nim>import algorithm, sequtils, strutils |
|||
import bignum |
|||
const |
|||
N = 50 # Number of fortunate numbers. |
|||
Lim = 75 # Number of primorials to compute. |
|||
iterator primorials(lim: Positive): Int = |
|||
var prime = newInt(2) |
|||
var primorial = newInt(1) |
|||
for _ in 1..lim: |
|||
primorial *= prime |
|||
prime = prime.nextPrime() |
|||
yield primorial |
|||
var list: seq[int] |
|||
for p in primorials(Lim): |
|||
var m = 3 |
|||
while true: |
|||
if probablyPrime(p + m, 25) != 0: |
|||
list.add m |
|||
break |
|||
inc m, 2 |
|||
list.sort() |
|||
list = list.deduplicate(true) |
|||
if list.len < N: |
|||
quit "Not enough values. Wanted $1, got $2.".format(N, list.len), QuitFailure |
|||
list.setLen(N) |
|||
echo "First $# fortunate numbers:".format(N) |
|||
for i, m in list: |
|||
stdout.write ($m).align(3), if (i + 1) mod 10 == 0: '\n' else: ' '</lang> |
|||
{{out}} |
|||
<pre>First 50 fortunate numbers: |
|||
3 5 7 13 17 19 23 37 47 59 |
|||
61 67 71 79 89 101 103 107 109 127 |
|||
151 157 163 167 191 197 199 223 229 233 |
|||
239 271 277 283 293 307 311 313 331 353 |
|||
373 379 383 397 401 409 419 421 439 443</pre> |
|||
=={{header|Raku}}== |
=={{header|Raku}}== |