Additive primes: Difference between revisions
Content added Content deleted
Drkameleon (talk | contribs) (Added Arturo implementation) |
(Added Algol 68) |
||
Line 17: | Line 17: | ||
:* the prime-numbers fandom: [https://prime-numbers.fandom.com/wiki/Additive_Primes additive primes]. |
:* the prime-numbers fandom: [https://prime-numbers.fandom.com/wiki/Additive_Primes additive primes]. |
||
<br><br> |
<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}}== |
=={{header|ALGOL W}}== |