From 26d71160a718f538fcdb465290ab5fc1b29fe301 Mon Sep 17 00:00:00 2001 From: Fabian Schmidt Date: Mon, 16 Sep 2024 12:42:55 +0200 Subject: [PATCH] Solution 3 --- src/bin/problem_3.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/bin/problem_3.rs diff --git a/src/bin/problem_3.rs b/src/bin/problem_3.rs new file mode 100644 index 0000000..06a546d --- /dev/null +++ b/src/bin/problem_3.rs @@ -0,0 +1,34 @@ +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); + } +}