RosettaCodeData/Task/Extensible-prime-generator/F-Sharp/extensible-prime-generator-1.fs

8 lines
460 B
Forth
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
let primeZ fN =primes()|>Seq.unfold(fun g-> Some(fN(g()), g))
let primesI() =primeZ bigint
let primes64() =primeZ int64
let primes32() =primeZ int32
let pCache =Seq.cache(primes32())
let isPrime g=if g<2 then false else let mx=int(sqrt(float g)) in pCache|>Seq.takeWhile(fun n->n<=mx)|>Seq.forall(fun n->g%n>0)
let isPrime64 g=if g<2L then false else let mx=int(sqrt(float g)) in pCache|>Seq.takeWhile(fun n->n<=mx)|>Seq.forall(fun n->g%(int64 n)>0L)