35 lines
777 B
Rust
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);
|
|
}
|
|
}
|