File: number.rs

package info (click to toggle)
rust-generator 0.7.1-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 348 kB
  • sloc: asm: 404; makefile: 4
file content (30 lines) | stat: -rw-r--r-- 535 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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);
        })
}