Compare commits

...

2 Commits

Author SHA1 Message Date
9a7e303ed8 Implement prime testing. 2025-12-04 11:05:40 +01:00
6894d250dd Improve testing script. 2025-12-04 11:04:16 +01:00
2 changed files with 50 additions and 15 deletions

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);
} }

42
test.sh
View File

@@ -1,28 +1,50 @@
#!/bin/bash #!/bin/bash
echo -n "Prime finding..." DEBUG_BIN="./target/debug/indivisible"
if [[ $(./target/release/indivisible 5) == 11 ]] RELEASE_BIN="./target/release/indivisible"
if [ -f "$DEBUG_BIN" ]
then then
echo " pass" BINARY="$DEBUG_BIN"
elif [ -f "$RELEASE_BIN" ]
then
BINARY="$RELEASE_BIN"
else else
echo " FAIL" >&2 echo "No valid binary found. Please compile the project."
exit 1 exit 1
fi fi
echo -n "Positive prime test..." tests=0
if ./target/release/indivisible -t 11 passed=0
((tests++))
echo -n "${tests}: Find 5th prime number..."
if [[ $("$BINARY" 5) == 11 ]]
then then
echo " pass" echo " pass"
((passed++))
else else
echo " FAIL" echo " FAIL"
exit 1
fi fi
echo -n "Negative prime test..." ((tests++))
if ! ./target/release/indivisible -t 9 echo -n "${tests}: 11 is prime..."
if "$BINARY" -t 11
then then
echo " pass" echo " pass"
((passed++))
else else
echo " FAIL" echo " FAIL"
exit 1
fi fi
((tests++))
echo -n "${tests}: 9 is not prime..."
if ! "$BINARY" -t 9
then
echo " pass"
((passed++))
else
echo " FAIL"
fi
echo "Results: $passed/$tests"