finish 35
This commit is contained in:
@@ -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"}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user