Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
43
Task/Additive-primes/CLU/additive-primes.clu
Normal file
43
Task/Additive-primes/CLU/additive-primes.clu
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
% Sieve of Erastothenes
|
||||
% Returns an array [1..max] marking the primes
|
||||
sieve = proc (max: int) returns (array[bool])
|
||||
prime: array[bool] := array[bool]$fill(1, max, true)
|
||||
prime[1] := false
|
||||
|
||||
for p: int in int$from_to(2, max/2) do
|
||||
if prime[p] then
|
||||
for comp: int in int$from_to_by(p*2, max, p) do
|
||||
prime[comp] := false
|
||||
end
|
||||
end
|
||||
end
|
||||
return(prime)
|
||||
end sieve
|
||||
|
||||
% Sum the digits of a number
|
||||
digit_sum = proc (n: int) returns (int)
|
||||
sum: int := 0
|
||||
while n ~= 0 do
|
||||
sum := sum + n // 10
|
||||
n := n / 10
|
||||
end
|
||||
return(sum)
|
||||
end digit_sum
|
||||
|
||||
start_up = proc ()
|
||||
max = 500
|
||||
po: stream := stream$primary_output()
|
||||
|
||||
count: int := 0
|
||||
prime: array[bool] := sieve(max)
|
||||
for i: int in array[bool]$indexes(prime) do
|
||||
if prime[i] cand prime[digit_sum(i)] then
|
||||
count := count + 1
|
||||
stream$putright(po, int$unparse(i), 5)
|
||||
if count//10 = 0 then stream$putl(po, "") end
|
||||
end
|
||||
end
|
||||
|
||||
stream$putl(po, "\nFound " || int$unparse(count) ||
|
||||
" additive primes < " || int$unparse(max))
|
||||
end start_up
|
||||
Loading…
Add table
Add a link
Reference in a new issue