Update all new Tasks
This commit is contained in:
parent
00a190b0a6
commit
91df62d461
5697 changed files with 93386 additions and 804 deletions
39
Task/Almost-prime/Rust/almost-prime.rust
Normal file
39
Task/Almost-prime/Rust/almost-prime.rust
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
fn is_kprime(n: usize, k: usize) -> bool {
|
||||
let mut primes = 0us;
|
||||
let mut f = 2us;
|
||||
let mut rem = n;
|
||||
while primes < k && rem > 1{
|
||||
while (rem % f) == 0 && rem > 1{
|
||||
rem /= f;
|
||||
primes += 1;
|
||||
}
|
||||
f += 1;
|
||||
}
|
||||
rem == 1 && primes == k
|
||||
}
|
||||
|
||||
struct KPrimeGen {
|
||||
k: usize,
|
||||
n: usize,
|
||||
}
|
||||
|
||||
impl Iterator for KPrimeGen {
|
||||
type Item = usize;
|
||||
fn next(&mut self) -> Option<usize> {
|
||||
self.n += 1;
|
||||
while !is_kprime(self.n, self.k) {
|
||||
self.n += 1;
|
||||
}
|
||||
Some(self.n)
|
||||
}
|
||||
}
|
||||
|
||||
fn kprime_generator(k: usize) -> KPrimeGen {
|
||||
KPrimeGen {k: k, n: 1}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
for k in 1us..6 {
|
||||
println!("{}: {:?}", k, kprime_generator(k).take(10).collect::<Vec<_>>());
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue