finish 35

This commit is contained in:
Dr. Matthias Ratajczak
2022-08-19 19:39:48 +02:00
parent 7c3a1a76d1
commit 13b9f475ce
2 changed files with 40 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
[package]
name = "euler35"
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"}
+31
View File
@@ -0,0 +1,31 @@
extern crate primes;
use primes::Primes;
fn main() {
let primes = Primes::get_between(2, 10_000_000);
let mut result = 0;
for prime in primes.vector.iter().take_while(|n| n < &&1_000_000) {
if is_circular_prime(*prime, &primes) {
result += 1;
}
}
println!("{result}");
}
fn is_circular_prime(n: u32, primes: &Primes<u32>) -> bool {
let mut old = n;
loop {
let mut new = old.to_string().chars().collect::<Vec<_>>();
new.rotate_right(1);
let p: u32 = String::from_iter(new.iter()).parse().unwrap();
if p == n {
return true;
}
if !primes.contains(&p) {
return false;
}
old = p;
}
}