15 lines
656 B
FSharp
15 lines
656 B
FSharp
let isSemiprime (n: int) =
|
|
let rec loop currentN candidateFactor numberOfFactors =
|
|
if numberOfFactors > 2 then numberOfFactors
|
|
elif currentN = candidateFactor then numberOfFactors+1
|
|
elif currentN % candidateFactor = 0 then loop (currentN/candidateFactor) candidateFactor (numberOfFactors+1)
|
|
else loop currentN (candidateFactor+1) numberOfFactors
|
|
if n < 2 then false else 2 = loop n 2 0
|
|
|
|
seq { 1 .. 100 } |> Seq.choose (fun n -> if isSemiprime n then Some(n) else None)
|
|
|> Seq.toList |> printfn "%A"
|
|
|
|
seq { 1675 .. 1680 }
|
|
|> Seq.choose (fun n -> if isSemiprime n then Some(n) else None)
|
|
|> Seq.toList
|
|
|> printfn "%A"
|