RosettaCodeData/Task/Additive-primes/BCPL/additive-primes.bcpl

36 lines
723 B
Plaintext

get "libhdr"
manifest $( limit = 500 $)
let dsum(n) =
n=0 -> 0,
dsum(n/10) + n rem 10
let sieve(prime, n) be
$( 0!prime := false
1!prime := false
for i=2 to n do i!prime := true
for i=2 to n/2
if i!prime
$( let j=i+i
while j<=n
$( j!prime := false
j := j+i
$)
$)
$)
let additive(prime, n) = n!prime & dsum(n)!prime
let start() be
$( let prime = vec limit
let num = 0
sieve(prime, limit)
for i=2 to limit
if additive(prime,i)
$( writed(i,5)
num := num + 1
if num rem 10 = 0 then wrch('*N')
$)
writef("*N*NFound %N additive primes < %N.*N", num, limit)
$)