master amadaluzia/rosetta-collatz / rust / src / main.rs
 1fn collatz(a: i32) -> i32 {
 2    if a % 2 == 0 {
 3        return a / 2;
 4    }
 5
 6    3 * a + 1
 7}
 8
 9fn collatz_sequence(a: i32) -> String {
10    let mut result = String::new();
11    result.push_str(format!("{}: ", a).as_str());
12    let mut i = collatz(a);
13    while i >= 1 {
14        if i == 1 {
15            result.push_str("1\n");
16            break;
17        }
18        result.push_str(format!("{}, ", i).as_str());
19        i = collatz(i);
20    }
21    result
22}
23
24fn main() {
25    for i in 1..=10000 {
26        print!("{}", collatz_sequence(i));
27    }
28}