Gentoo Archives: gentoo-dev

From: Ulrich Mueller <ulm@g.o>
To: Rolf Eike Beer <eike@×××××××.de>
Cc: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] [PATCH 3/5] qmail.eclass: simplify is_prime()
Date: Thu, 12 Aug 2021 11:25:19
Message-Id: ur1eynbvu@gentoo.org
In Reply to: [gentoo-dev] [PATCH 3/5] qmail.eclass: simplify is_prime() by Rolf Eike Beer
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

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies

Subject Author
Re: [gentoo-dev] [PATCH 3/5] qmail.eclass: simplify is_prime() Rolf Eike Beer <eike@×××××××.de>