>>>>> On Thu, 12 Aug 2021, Rolf Eike Beer wrote:
> -# @FUNCTION: primes
> -# @USAGE: <min> <max>
> +# @FUNCTION: is_prime
> +# @USAGE: <number>
> # @DESCRIPTION:
> -# Prints a list of primes between min and max inclusive
> -# Note: this functions gets very slow when used with large numbers.
> -primes() {
> - local min=${1} max=${2}
> - local result= primelist=2 i p
> +# Checks wether a number is a valid prime number for queue split
> +is_prime() {
> + local number=${1} i
> +
> + if [[ ${number} < 7 ]]; then
> + # too small
> + return 0
> + fi
So e.g. all numbers between 100 and 699 qualify as primes? I doubt that
this is what was intended. :)
>
> - [[ ${min} -le 2 ]] && result="${result} 2"
> + if [[ $[number % 2] == 0 ]]; then
> + return 1
> + fi
>
> - for ((i = 3; i <= max; i += 2))
> + # let i run up to the square root of number
> + for ((i = 3; i * i <= number; i += 2))
> do
> - for p in ${primelist}
> - do
> - [[ $[i % p] == 0 || $[p * p] -gt ${i} ]] && \
> - break
> - done
> - if [[ $[i % p] != 0 ]]
> - then
> - primelist="${primelist} ${i}"
> - [[ ${i} -ge ${min} ]] && \
> - result="${result} ${i}"
> + if [[ $[number % i ] == 0 ]]; then
> + return 1
> fi
> done
>
> - echo ${result}
> -}
This function asks for a unit test in eclass/tests/.
Ulrich
signature.asc
Description: PGP signature
