Skip to content

Instantly share code, notes, and snippets.

@sirodoht
Created January 31, 2018 09:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sirodoht/9abf3866134ecb41a1f9a9d208b924fa to your computer and use it in GitHub Desktop.
Save sirodoht/9abf3866134ecb41a1f9a9d208b924fa to your computer and use it in GitHub Desktop.
Longest Collatz sequence solution, Project Euler #14
// Longest Collatz sequence
// https://projecteuler.net/problem=14
fn collatz(num: u32) -> u32 {
if num == 1 {
return num;
}
if num % 2 == 0 {
num / 2
} else {
(num * 3) + 1
}
}
fn main() {
let mut max_terms: u32 = 0;
let mut max_terms_number: u32 = 0;
for i in 2..1_000_001 {
let mut current_terms: u32 = 0;
let mut result: u32 = i;
while result != 1 {
result = collatz(result);
current_terms += 1;
if current_terms > max_terms {
max_terms = current_terms;
max_terms_number = i;
}
}
// println!("collatz({}) -> {}", i, current_terms);
}
println!("Result: {}", max_terms_number);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment