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

42
test.sh
View File

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