Implement prime testing.

This commit is contained in:
2025-12-04 11:05:40 +01:00
parent 6894d250dd
commit 9a7e303ed8

View File

@@ -80,12 +80,15 @@ fn main() {
} else { } else {
let mut cand_gen = CandidateGenerator::new(); let mut cand_gen = CandidateGenerator::new();
while primes_list.borrow().len() < opts.num as usize { loop {
let cand = cand_gen.next(); let cand = cand_gen.next();
let mut is_prime = true; if opts.test && cand > opts.num {
break;
}
for i in primes_list.borrow().iter() { let mut is_prime = true;
if cand % *i == 0 { for p in primes_list.borrow().iter() {
if cand % *p == 0 {
is_prime = false; is_prime = false;
break; break;
} }
@@ -96,10 +99,20 @@ fn main() {
if opts.verbose { if opts.verbose {
println!("{}", cand); println!("{}", cand);
} }
if !opts.test && primes_list.borrow().len() == opts.num as usize {
break;
}
} }
} }
if !opts.verbose { if opts.test {
if *primes_list.borrow().back().unwrap() == opts.num {
process::exit(0)
} else {
process::exit(1)
}
} else if !opts.verbose {
let last_prime = *primes_list.borrow().back().unwrap(); let last_prime = *primes_list.borrow().back().unwrap();
println!("{}", last_prime); println!("{}", last_prime);
} }