Semiprime: Difference between revisions
Content added Content deleted
(Added F# version) |
|||
Line 179: | Line 179: | ||
1679 -> true |
1679 -> true |
||
1680 -> false</pre> |
1680 -> false</pre> |
||
=={{header|F_Sharp|F#}}== |
|||
<lang 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"</lang> |
|||
{{out}} |
|||
<pre>[4; 6; 9; 10; 14; 15; 21; 22; 25; 26; 33; 34; 35; 38; 39; 46; 49; 51; 55; 57; 58; 62; 65; 69; 74; 77; 82; 85; 86; 87; 91; 93; 94; 95] |
|||
[1678; 1679] |
|||
</pre> |
|||
=={{Header|Forth}}== |
=={{Header|Forth}}== |