Primes whose sum of digits is 25: Difference between revisions
Content added Content deleted
(Added phix and stretch goal) |
(Added Algol W) |
||
Line 7: | Line 7: | ||
;Stretch goal |
;Stretch goal |
||
Show the total number of all such primes that do not contain any zeroes. |
Show the total number of all such primes that do not contain any zeroes. |
||
=={{header|ALGOL W}}== |
|||
<lang algolw>begin % find some primes whose digits sum to 25 % |
|||
% 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 := 4999; |
|||
begin |
|||
logical array prime( 1 :: MAX_NUMBER ); |
|||
integer pCount; |
|||
% sieve the primes to MAX_NUMBER % |
|||
Eratosthenes( prime, MAX_NUMBER ); |
|||
% find the primes whose digits sum to 25 % |
|||
pCount := 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 dSum = 25 then begin |
|||
writeon( i_w := 4, s_w := 0, " ", i ); |
|||
pCount := pCount + 1; |
|||
if pCount rem 20 = 0 then write() |
|||
end if_prime_pReversed |
|||
end if_prime_i |
|||
end for_i ; |
|||
write( i_w := 1, s_w := 0, "Found ", pCount, " sum25 primes below ", MAX_NUMBER + 1 ) |
|||
end |
|||
end.</lang> |
|||
{{out}} |
|||
<pre> |
|||
997 1699 1789 1879 1987 2689 2797 2887 3499 3697 3769 3877 3967 4597 4759 4957 4993 |
|||
Found 17 sum25 primes below 5000 |
|||
</pre> |
|||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
Line 49: | Line 96: | ||
"1 minute and 27s" |
"1 minute and 27s" |
||
</pre> |
</pre> |
||
=={{header|Ring}}== |
=={{header|Ring}}== |