Fix prime calculator; more threads by default

This commit is contained in:
2024-07-11 03:08:38 +02:00
parent 71138258e6
commit 099012a60b
6 changed files with 85 additions and 16 deletions
+20 -7
View File
@@ -17,7 +17,12 @@ pub mod prime_utils {
return true;
}
if number.sqrt().pow(2) == *number {
let sqrtnum = number.sqrt();
if sqrtnum.pow(2) == *number {
if number == &BigUint::from(23u8) {
eprintln!("SQRT check failed");
}
return false;
}
@@ -31,21 +36,23 @@ pub mod prime_utils {
let one = BigUint::one();
let zero = BigUint::zero();
let sqrtnum = number.sqrt() + &one; //fake ceil function
let sqrtnum = sqrtnum + &one; //fake ceil function
for prime in g_primes {
if prime < &sqrtnum && number % prime == zero {
if number == &BigUint::from(23u8) {
eprintln!("Prime table check failed");
}
return false;
}
}
if !is_probably_prime(number, 5) {
return false;
}
loop {
i += &one;
if number % &i == zero {
if number == &BigUint::from(23u8) {
eprintln!("manual check failed");
}
return false;
}
if i == sqrtnum {
@@ -61,6 +68,12 @@ pub mod prime_utils {
last = (last.pow(2) - &two) % number;
}
last == BigUint::from(0u8)
let ret = last == BigUint::from(0u8);
if number == &BigUint::from(23u8) && !ret {
eprintln!("RET check failed");
}
ret
}
}
+2 -2
View File
@@ -65,8 +65,8 @@ fn main() {
const N: i64 = 1_000_000;
const NF: f64 = N as f64;
const NU: usize = N as usize;
const THREADS: usize = 12;
const SPLITTER: u64 = N as u64 / 10;
const THREADS: usize = 30;
const SPLITTER: u64 = N as u64 / THREADS as u64;
try_set_thread_priority();