lambdaway
::
additive_primes
8
|
list
|
login
|
load
|
|
_h1 [[primes]] | additive | [[magnanimous]] _p Following [[rosettacode|https://rosettacode.org/wiki/Additive_primes#Python]] additive primes are prime numbers for which the sum of their decimal digits are also primes. {prewrap '{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} }}}} -> {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} }}}} '{S.replace \s by space in {S.map {lambda {:i} {if {isprime :i} then :i else}} {S.serie 2 100}}} -> {S.replace \s by space in {S.map {lambda {:i} {if {isprime :i} then :i else}} {S.serie 2 100}}} '{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}}} -> {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 12345} -> {digit.sum 12345} '{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}}} -> {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}}} i.e 54 additive primes until 500. }
lambdaway v.20211111