lambdaway
::
primes
6
|
list
|
login
|
load
|
|
_h1 primes | [[additive_primes]] _ul [[https://rosettacode.org/wiki/Primality_by_trial_division|https://rosettacode.org/wiki/Primality_by_trial_division#JavaScript]] _ul [[https://rosettacode.org/wiki/Sequence_of_primes_by_trial_division|https://rosettacode.org/wiki/Sequence_of_primes_by_trial_division#Lambdatalkhttps://rosettacode.org/wiki/Sequence_of_primes_by_trial_division#Lambdatalk]] {prewrap 1) the simplest '{def isprime1 {def isprime1.loop {lambda {:n :m :i} {if {> :i :m} then true else {if {= {% :n :i} 0} then false else {isprime1.loop :n :m {+ :i 1}} } }}} {lambda {:n} {isprime1.loop :n {sqrt :n} 2} }} -> {def isprime1 {def isprime1.loop {lambda {:n :m :i} {if {> :i :m} then true else {if {= {% :n :i} 0} then false else {isprime1.loop :n :m {+ :i 1}} } }}} {lambda {:n} {isprime1.loop :n {sqrt :n} 2} }} 2) slightly improved '{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 {= :n 1} then false else {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 {= :n 1} then false else {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} }}}}} 3) testing '{isprime1 1299709} -> stackoverflow on my iPad Pro '{isprime 1299709} -> true '{def primesTo {lambda {:f :n} {S.replace \s by space in {S.map {{lambda {:f :i} {if {:f :i} then :i else}} :f} {S.serie 2 :n}}} }} -> {def primesTo {lambda {:f :n} {S.replace \s by space in {S.map {{lambda {:f :i} {if {:f :i} then :i else}} :f} {S.serie 2 :n}}} }} '{primesTo isprime1 100} -> {primesTo isprime1 100} in 25ms '{primesTo isprime 100} -> {primesTo isprime 100} in 20ms '{primesTo isprime1 1000000} in about 30000ms '{primesTo isprime 1000000} in about 15000ms } ;; {div {@ id="output"}•••} {script function isPrime(n) { if (n == 2 || n == 3 || n == 5 || n == 7) { return true; } else if ((n < 2) || (n % 2 == 0)) { return false; } else { for (var i = 3; i <= Math.sqrt(n); i += 2) { if (n % i == 0) return false; } return true; } } var run = function() { document.getElementById("output").innerHTML = isPrime(104743) }; // setTimeout( run , 1 ) // Output: true }
lambdaway v.20211111