>>>>> 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

Attachment: signature.asc
Description: PGP signature

Reply via email to