1 |
>>>>> On Thu, 12 Aug 2021, Rolf Eike Beer wrote: |
2 |
|
3 |
> -# @FUNCTION: primes |
4 |
> -# @USAGE: <min> <max> |
5 |
> +# @FUNCTION: is_prime |
6 |
> +# @USAGE: <number> |
7 |
> # @DESCRIPTION: |
8 |
> -# Prints a list of primes between min and max inclusive |
9 |
> -# Note: this functions gets very slow when used with large numbers. |
10 |
> -primes() { |
11 |
> - local min=${1} max=${2} |
12 |
> - local result= primelist=2 i p |
13 |
> +# Checks wether a number is a valid prime number for queue split |
14 |
> +is_prime() { |
15 |
> + local number=${1} i |
16 |
> + |
17 |
> + if [[ ${number} < 7 ]]; then |
18 |
> + # too small |
19 |
> + return 0 |
20 |
> + fi |
21 |
|
22 |
So e.g. all numbers between 100 and 699 qualify as primes? I doubt that |
23 |
this is what was intended. :) |
24 |
|
25 |
> |
26 |
> - [[ ${min} -le 2 ]] && result="${result} 2" |
27 |
> + if [[ $[number % 2] == 0 ]]; then |
28 |
> + return 1 |
29 |
> + fi |
30 |
> |
31 |
> - for ((i = 3; i <= max; i += 2)) |
32 |
> + # let i run up to the square root of number |
33 |
> + for ((i = 3; i * i <= number; i += 2)) |
34 |
> do |
35 |
> - for p in ${primelist} |
36 |
> - do |
37 |
> - [[ $[i % p] == 0 || $[p * p] -gt ${i} ]] && \ |
38 |
> - break |
39 |
> - done |
40 |
> - if [[ $[i % p] != 0 ]] |
41 |
> - then |
42 |
> - primelist="${primelist} ${i}" |
43 |
> - [[ ${i} -ge ${min} ]] && \ |
44 |
> - result="${result} ${i}" |
45 |
> + if [[ $[number % i ] == 0 ]]; then |
46 |
> + return 1 |
47 |
> fi |
48 |
> done |
49 |
> |
50 |
> - echo ${result} |
51 |
> -} |
52 |
|
53 |
This function asks for a unit test in eclass/tests/. |
54 |
|
55 |
Ulrich |