Additive primes: Difference between revisions

Added Algol 68
(Added Arturo implementation)
(Added Algol 68)
Line 17:
:*   the prime-numbers fandom: [https://prime-numbers.fandom.com/wiki/Additive_Primes additive primes].
<br><br>
 
=={{header|ALGOL 68}}==
<lang algol68>BEGIN # find additive primes - primes whose digit sum is also prime #
INT max prime = 499;
# sieve the primes to max prime #
[ 1 : max prime ]BOOL prime;
prime[ 1 ] := FALSE; prime[ 2 ] := TRUE;
FOR i FROM 3 BY 2 TO UPB prime DO prime[ i ] := TRUE OD;
FOR i FROM 4 BY 2 TO UPB prime DO prime[ i ] := FALSE OD;
FOR i FROM 3 BY 2 TO ENTIER sqrt( max prime ) DO
IF prime[ i ] THEN FOR s FROM i * i BY i + i TO UPB prime DO prime[ s ] := FALSE OD FI
OD;
# find the additive primes #
INT additive count := 0;
FOR n TO max prime DO
IF prime[ n ] THEN
# have a prime #
INT digit sum := 0;
INT v := n;
WHILE v > 0 DO
digit sum +:= v MOD 10;
v OVERAB 10
OD;
IF prime( digit sum ) THEN
# the digit sum is prime #
additive count +:= 1;
print( ( " ", whole( n, -3 ) ) );
IF additive count MOD 20 = 0 THEN print( ( newline ) ) FI
FI
FI
OD;
print( ( newline, "Found ", whole( additive count, 0 ), " additive primes below ", whole( max prime + 1, 0 ), newline ) )
END</lang>
{{out}}
<pre>
2 3 5 7 11 23 29 41 43 47 61 67 83 89 101 113 131 137 139 151
157 173 179 191 193 197 199 223 227 229 241 263 269 281 283 311 313 317 331 337
353 359 373 379 397 401 409 421 443 449 461 463 467 487
Found 54 additive primes below 500
</pre>
 
=={{header|ALGOL W}}==
3,037

edits