let minDivsor n = seq{3L..n|>float|>sqrt|>int64} |> Seq.where(fun x -> n%x=0L) |> Seq.tryHead let n = stdin.ReadLine() |> int64 n |> minDivsor |> function | Some(x) -> x | None -> match n%2L with | 0L -> n/2L | _ -> n |> printfn "%i"