Skip to content

Commit 86d564d

Browse files
Merge pull request #430 from WinterWonderland/master
performance optimization of primelib.isPrime(number)
2 parents a6e4dd9 + dcf4f1e commit 86d564d

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

primelib/primelib.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ def isPrime(number):
7373

7474
# 0 and 1 are none primes.
7575
if number <= 1:
76-
status = False
77-
78-
for divisor in range(2,int(round(math.sqrt(number)))+1):
76+
return False
77+
78+
# all even numbers except of 2 are no primes.
79+
if number % 2 == 0 and number > 2:
80+
return False
7981

80-
# if 'number' divisible by 'divisor' then sets 'status'
81-
# of false and break up the loop.
82-
if number % divisor == 0:
83-
status = False
84-
break
82+
# if 'number' divisible by 'divisor' then sets 'status' to false.
83+
# lazy evaluation breaks the all loop on first false.
84+
status = all(number % divisor for divisor in range(3, int(math.sqrt(number)) + 1, 2))
8585

8686
# precondition
8787
assert isinstance(status,bool), "'status' must been from type bool"

0 commit comments

Comments
 (0)