RosettaCodeData/Task/Additive-primes/ALGOL-68/additive-primes.alg
2024-07-13 15:19:22 -07:00

25 lines
892 B
Text

BEGIN # find additive primes - primes whose digit sum is also prime #
# sieve the primes to max prime #
PR read "primes.incl.a68" PR
[]BOOL prime = PRIMESIEVE 499;
# find the additive primes #
INT additive count := 0;
FOR n TO UPB 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 #
print( ( " ", whole( n, -3 ) ) );
IF ( additive count +:= 1 ) MOD 20 = 0 THEN print( ( newline ) ) FI
FI
FI
OD;
print( ( newline, "Found ", whole( additive count, 0 ) ) );
print( ( " additive primes below ", whole( UPB prime + 1, 0 ), newline ) )
END