Semiprime: Difference between revisions

Line 2,700:
functional version of is_semiprime:
<syntaxhighlight lang="rust">fn is_semiprime(n: usize) -> bool {
fn iter(x: usize, start: usize, acccount: &[usize]) -> Vec<usize> {
if acc.len()count > 2 {return acc.to_vec()count} // break for semi_prime
let limit = (x as f64).sqrt().ceil() as usize;
match (start..=limit).skip_while(|i| x % i > 0).next() {
Some(v) => iter(x / v, v, &[&[v],count acc].concat()+ 1),
None => if x < 2 { acc.to_vec()count }
else { [&[x],count acc].concat()+ 1 }
}
}
iter(n, 2, &[]).len(0) == 2
}</syntaxhighlight>
{{out}}
64

edits