fn main() { let result = prime_factors(600851475143).into_iter().max(); println!("Result: {}", result.unwrap()); } fn prime_factors(number: i64) -> Vec { let mut factors = vec![2]; let upper: i64 = (number as f64).sqrt().ceil() as i64; for i in 3..upper { let mut is_prime = true; for factor in factors.clone() { if i % factor == 0 { is_prime = false; break; } } if is_prime && number % i == 0 { factors.push(i); } } return factors; } #[cfg(test)] mod tests { use crate::prime_factors; #[test] fn it_works() { let result = prime_factors(13195).into_iter().max(); assert_eq!(result.unwrap(), 29); } }