Additive primes: Difference between revisions
Content added Content deleted
(→OCaml: add) |
(add lambdatalk code) |
||
Line 2,015: | Line 2,015: | ||
<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 </pre> |
<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 </pre> |
||
=={{header|Lambdatalk}}== |
|||
<syntaxhighlight lang="scheme"> |
|||
{def isprime |
|||
{def isprime.loop |
|||
{lambda {:n :m :i} |
|||
{if {> :i :m} |
|||
then true |
|||
else {if {= {% :n :i} 0} |
|||
then false |
|||
else {isprime.loop :n :m {+ :i 2}} |
|||
}}}} |
|||
{lambda {:n} |
|||
{if {or {= :n 2} {= :n 3} {= :n 5} {= :n 7}} |
|||
then true |
|||
else {if {or {< : n 2} {= {% :n 2} 0}} |
|||
then false |
|||
else {isprime.loop :n {sqrt :n} 3} |
|||
}}}} |
|||
-> isprime |
|||
{def digit.sum |
|||
{def digit.sum.loop |
|||
{lambda {:n :sum} |
|||
{if {> :n 0} |
|||
then {digit.sum.loop {floor {/ :n 10}} |
|||
{+ :sum {% :n 10}}} |
|||
else :sum}}} |
|||
{lambda {:n} |
|||
{digit.sum.loop :n 0}}} |
|||
-> digit.sum |
|||
{S.replace \s by space in |
|||
{S.map {lambda {:i} |
|||
{if {and {isprime :i} |
|||
{isprime {digit.sum :i}}} |
|||
then :i |
|||
else}} |
|||
{S.serie 2 500}}} |
|||
-> |
|||
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 |
|||
i.e 54 additive primes until 500. |
|||
</syntaxhighlight> |
|||
=={{header|langur}}== |
=={{header|langur}}== |