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}