euler/src/bin/problem_3.rs
2024-09-16 12:42:55 +02:00

35 lines
777 B
Rust

fn main() {
let result = prime_factors(600851475143).into_iter().max();
println!("Result: {}", result.unwrap());
}
fn prime_factors(number: i64) -> Vec<i64> {
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);
}
}