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