Additive primes: Difference between revisions
Content deleted Content added
m →{{header|ALGOL 68}}: tweak |
Add Seed7 |
||
Line 938: | Line 938: | ||
found 54 additive primes. |
found 54 additive primes. |
||
done... |
done... |
||
</pre> |
|||
=={{header|Seed7}}== |
|||
<lang seed7>$ include "seed7_05.s7i"; |
|||
const func boolean: isPrime (in integer: number) is func |
|||
result |
|||
var boolean: prime is FALSE; |
|||
local |
|||
var integer: upTo is 0; |
|||
var integer: testNum is 3; |
|||
begin |
|||
if number = 2 then |
|||
prime := TRUE; |
|||
elsif odd(number) and number > 2 then |
|||
upTo := sqrt(number); |
|||
while number rem testNum <> 0 and testNum <= upTo do |
|||
testNum +:= 2; |
|||
end while; |
|||
prime := testNum > upTo; |
|||
end if; |
|||
end func; |
|||
const func integer: digitSum (in var integer: number) is func |
|||
result |
|||
var integer: sum is 0; |
|||
begin |
|||
while number > 0 do |
|||
sum +:= number rem 10; |
|||
number := number div 10; |
|||
end while; |
|||
end func; |
|||
const proc: main is func |
|||
local |
|||
var integer: n is 0; |
|||
var integer: count is 0; |
|||
begin |
|||
for n range 2 to 499 do |
|||
if isPrime(n) and isPrime(digitSum(n)) then |
|||
write(n lpad 3 <& " "); |
|||
incr(count); |
|||
if count rem 9 = 0 then |
|||
writeln; |
|||
end if; |
|||
end if; |
|||
end for; |
|||
writeln("\nFound " <& count <& " additive primes < 500."); |
|||
end func;</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 < 500. |
|||
</pre> |
</pre> |
||