30 lines
531 B
Rust
30 lines
531 B
Rust
use generator::*;
|
|
|
|
fn factors(n: u32) -> Generator<'static, (), u32> {
|
|
Gn::new_scoped(move |mut s| {
|
|
if n == 0 {
|
|
return 0;
|
|
}
|
|
|
|
s.yield_with(1);
|
|
|
|
for i in 2..n {
|
|
if n % i == 0 {
|
|
s.yield_with(i);
|
|
}
|
|
}
|
|
done!();
|
|
})
|
|
}
|
|
|
|
fn main() {
|
|
for i in factors(28) {
|
|
println!("{i}");
|
|
}
|
|
|
|
(0..10000)
|
|
.filter(|n| factors(*n).sum::<u32>() == *n)
|
|
.fold((), |_, n| {
|
|
println!("n = {n}");
|
|
})
|
|
}
|