diff --git a/src/is_prime.rs b/src/is_prime.rs index 6407f7a..d28e564 100644 --- a/src/is_prime.rs +++ b/src/is_prime.rs @@ -7,7 +7,7 @@ pub mod prime_utils { } #[must_use] - pub fn is_prime(number: &BigUint, g_primes: &Vec) -> bool { + pub fn is_prime(number: &BigUint, g_primes: &[BigUint]) -> bool { if BigUint::from(1u8) == *number { return false; } @@ -27,8 +27,8 @@ pub mod prime_utils { let sqrtnum = number.sqrt() + &one; //fake ceil function - for prime in g_primes { - if prime < &sqrtnum && number % prime == ZERO { + for prime in g_primes.iter().filter(|p| p < &&sqrtnum) { + if number % prime == ZERO { return false; } } diff --git a/src/main.rs b/src/main.rs index bd7214d..c8598b8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,7 +23,7 @@ fn p(n: f64) -> f64 { let ln_ln_ln_n = ln_ln_n.ln(); n * (ln_n + ln_ln_n - 1.0 + (ln_ln_ln_n - 2.0) / ln_n - - ((ln_ln_n).powi(2) - 6.0 * ln_ln_n + 11.0) / (2.0 * 2.0f64.log2() * ln_n) + - ((ln_ln_n).powi(2) - 6.0 * ln_ln_n + 11.0) / (2.0 * ln_n) + ((ln_ln_n / ln_n).powi(3)) * (1.0 / ln_n)) }