Numbers whose binary and ternary digit sums are prime: Difference between revisions

Added Algol W
(Add BCPL)
(Added Algol W)
Line 108:
157 162 167 171 173 179 181 185 191 193
199</pre>
 
=={{header|ALGOL W}}==
<lang algolw>begin % find numbers whose binary and ternary digit sums are prime %
% returns the digit sum of n in base b %
integer procedure digitSum( integer value n, base ) ;
begin
integer v, dSum;
v := abs n;
dSum := 0;
while v > 0 do begin
dSum := dSum + v rem base;
v := v div base
end while_v_gt_0 ;
dSum
end digitSum ;
integer MAX_PRIME, MAX_NUMBER;
MAX_PRIME := 199;
begin
logical array prime( 1 :: MAX_PRIME );
integer nCount;
% sieve the primes to MAX_PRIME %
prime( 1 ) := false; prime( 2 ) := true;
for i := 3 step 2 until MAX_PRIME do prime( i ) := true;
for i := 4 step 2 until MAX_PRIME do prime( i ) := false;
for i := 3 step 2 until truncate( sqrt( MAX_PRIME ) ) do begin
integer ii; ii := i + i;
if prime( i ) then for np := i * i step ii until MAX_PRIME do prime( np ) := false
end for_i ;
% find the numbers %
nCount := 0;
for i := 1 until MAX_PRIME do begin
if prime( digitSum( i, 2 ) ) and prime( digitSum( i, 3 ) ) then begin
% have another matching number %
writeon( i_w := 3, s_w := 0, " ", i );
nCount := nCount + 1;
if nCount rem 14 = 0 then write()
end if_have_a_suitable_number
end for_i ;
write( i_w := 1, s_w := 0, "Found ", nCount, " numbers with prime binary and ternary digit sums up to ", MAX_PRIME )
end
end.</lang>
{{out}}
<pre>
5 6 7 10 11 12 13 17 18 19 21 25 28 31
33 35 36 37 41 47 49 55 59 61 65 67 69 73
79 82 84 87 91 93 97 103 107 109 115 117 121 127
129 131 133 137 143 145 151 155 157 162 167 171 173 179
181 185 191 193 199
Found 61 numbers with prime binary and ternary digit sums up to 199
</pre>
 
=={{header|APL}}==
{{works with|Dyalog APL}}
3,044

edits