Additive primes: Difference between revisions
Content added Content deleted
m (Minor edit to Forth code) |
(Added Algol W) |
||
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 W}}== |
|||
<lang algolw>begin % find some additive primes - primes whose digit sum is also prime % |
|||
% sets p( 1 :: n ) to a sieve of primes up to n % |
|||
procedure Eratosthenes ( logical array p( * ) ; integer value n ) ; |
|||
begin |
|||
p( 1 ) := false; p( 2 ) := true; |
|||
for i := 3 step 2 until n do p( i ) := true; |
|||
for i := 4 step 2 until n do p( i ) := false; |
|||
for i := 3 step 2 until truncate( sqrt( n ) ) do begin |
|||
integer ii; ii := i + i; |
|||
if p( i ) then for pr := i * i step ii until n do p( pr ) := false |
|||
end for_i ; |
|||
end Eratosthenes ; |
|||
integer MAX_NUMBER; |
|||
MAX_NUMBER := 500; |
|||
begin |
|||
logical array prime( 1 :: MAX_NUMBER ); |
|||
integer aCount; |
|||
% sieve the primes to MAX_NUMBER % |
|||
Eratosthenes( prime, MAX_NUMBER ); |
|||
% find the primes that are additive primes % |
|||
aCount := 0; |
|||
for i := 1 until MAX_NUMBER do begin |
|||
if prime( i ) then begin |
|||
integer dSum, v; |
|||
v := i; |
|||
dSum := 0; |
|||
while v > 0 do begin |
|||
dSum := dSum + v rem 10; |
|||
v := v div 10 |
|||
end while_v_gt_0 ; |
|||
if prime( dSum ) then begin |
|||
writeon( i_w := 4, s_w := 0, " ", i ); |
|||
aCount := aCount + 1; |
|||
if aCount rem 20 = 0 then write() |
|||
end if_prime_dSum |
|||
end if_prime_i |
|||
end for_i ; |
|||
write( i_w := 1, s_w := 0, "Found ", aCount, " additive primes below ", MAX_NUMBER ) |
|||
end |
|||
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|APL}}== |
=={{header|APL}}== |