diff --git a/src/euler27/Cargo.toml b/src/euler27/Cargo.toml new file mode 100644 index 0000000..2b3f298 --- /dev/null +++ b/src/euler27/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "euler27" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/src/euler27/src/main.rs b/src/euler27/src/main.rs new file mode 100644 index 0000000..6cfd4b1 --- /dev/null +++ b/src/euler27/src/main.rs @@ -0,0 +1,47 @@ +use std::collections::HashMap; + +fn main() { + let q = Quadratic { a: 1, b: 41 }; + + let mut p = Primes::new(); + + for n in 0..=39 { + let result = q.calculate(n); + dbg!(p.is_prime(n)); + println!("{}", result); + } +} + +struct Quadratic { + a: isize, + b: isize, +} + +impl Quadratic { + fn calculate(&self, n: isize) -> isize { + n.pow(2) + self.a * n + self.b + } +} + +struct Primes(HashMap); + +impl Primes { + fn new() -> Self { + let inner = HashMap::new(); + Self(inner) + } + + fn is_prime(&mut self, number: isize) -> bool { + let value = self.0.get(&number); + if let Some(result) = value { + return *result; + } + let is_prime = Self::test_primality(number); + self.0.insert(number, is_prime); + is_prime + } + + fn test_primality(number: isize) -> bool { + let max = (number as f64).sqrt(); + } +}