Extra primes: Difference between revisions

m (→‎{{header|Phix}}: fixed a couple of syntax glitches, added personal tag)
Line 1,621:
7723
7727</pre>
 
=={{header|Nim}}==
<lang Nim>import sequtils, strutils
 
const N = 10_000
 
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
 
var primeList: seq[0..N]
var primeSet: set[0..N]
 
for n in 2..N:
if n.isPrime:
primeList.add n
primeSet.incl n
 
type Digit = 0..9
 
proc digits(n: Positive): seq[Digit] =
var n = n.int
while n != 0:
result.add n mod 10
n = n div 10
 
proc isExtraPrime(prime: Positive): bool =
var sum = 0
for digit in prime.digits:
if digit notin primeSet: return false
inc sum, digit
result = sum in primeSet
 
let result = primeList.filterIt(it.isExtraPrime)
echo "Found $1 extra primes less than $2:".format(result.len, N)
for i, p in result:
stdout.write ($p).align(4)
stdout.write if (i + 1) mod 9 == 0: '\n' else: ' '</lang>
 
{{out}}
<pre>Found 36 extra primes less than 10000:
2 3 5 7 23 223 227 337 353
373 557 577 733 757 773 2333 2357 2377
2557 2753 2777 3253 3257 3323 3527 3727 5233
5237 5273 5323 5527 7237 7253 7523 7723 7727</pre>
 
=={{header|Perl}}==
Anonymous user