7 lines
460 B
FSharp
7 lines
460 B
FSharp
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)
|