35 lines
784 B
Plaintext
35 lines
784 B
Plaintext
;;; find some additive primes - primes whose digit sum is also prime
|
|
;;; Library: Action! Sieve of Eratosthenes
|
|
INCLUDE "H6:SIEVE.ACT"
|
|
|
|
PROC Main()
|
|
DEFINE MAX_PRIME = "500"
|
|
|
|
BYTE ARRAY primes(MAX_PRIME)
|
|
CARD n, digitSum, v, count
|
|
|
|
Sieve(primes,MAX_PRIME)
|
|
|
|
count = 0
|
|
FOR n = 1 TO MAX_PRIME - 1 DO
|
|
IF primes( n ) THEN
|
|
digitSum = 0
|
|
v = n
|
|
WHILE v > 0 DO
|
|
digitSum ==+ v MOD 10
|
|
v ==/ 10
|
|
OD
|
|
IF primes( digitSum ) THEN
|
|
IF n < 100 THEN
|
|
Put(' )
|
|
IF n < 10 THEN Put(' ) FI
|
|
FI
|
|
Put(' )PrintI( n )
|
|
count ==+ 1
|
|
IF count MOD 20 = 0 THEN PutE() FI
|
|
FI
|
|
FI
|
|
OD
|
|
PutE()Print( "Found " )PrintI( count )Print( " additive primes below " )PrintI( MAX_PRIME + 1 )PutE()
|
|
RETURN
|