diff --git a/src/euler37/Cargo.toml b/src/euler37/Cargo.toml new file mode 100644 index 0000000..e4343d8 --- /dev/null +++ b/src/euler37/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "euler37" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +primes = {version = "*", path = "../../lib/primes"} diff --git a/src/euler37/src/main.rs b/src/euler37/src/main.rs new file mode 100644 index 0000000..7382672 --- /dev/null +++ b/src/euler37/src/main.rs @@ -0,0 +1,32 @@ +extern crate primes; + +use primes::Primes; + +fn main() { + let primes = Primes::get_between(2, 1_000_000); + let mut result = vec![]; + for p in &primes.vector { + if is_truncatable(*p, &primes) { + result.push(*p); + if result.len() == 11 { + println!("{}", result.iter().sum::()); + } + } + } +} + +fn is_truncatable(x: u32, primes: &Primes) -> bool { + if x < 10 { + return false; + } + let s = x.to_string(); + for i in 1..s.len() { + if !primes.contains(&s[i..].parse().unwrap()) { + return false; + } + if !primes.contains(&s[..i].parse().unwrap()) { + return false; + } + } + true +}