diff --git a/src/bin/problem_6.rs b/src/bin/problem_6.rs new file mode 100644 index 0000000..a97e4e1 --- /dev/null +++ b/src/bin/problem_6.rs @@ -0,0 +1,43 @@ +fn main() { + let result = smallest_multiple(20); + println!("Result: {}", result); +} + +fn smallest_multiple(number: i64) -> i64 { + let factorial = factorial(number); + for i in number..=factorial { + if is_multiple(i, number) { + return i; + } + } + + return factorial; +} + +fn is_multiple(number: i64, range: i64) -> bool { + for i in 2..=range { + if number % i != 0 { + return false; + } + } + true +} + +fn factorial(n: i64) -> i64 { + let mut result = 1; + for i in 1..=n { + result *= i; + } + return result; +} + +#[cfg(test)] +mod tests { + use crate::smallest_multiple; + + #[test] + fn it_works() { + let result = smallest_multiple(10); + assert_eq!(result, 2520); + } +}