Skip to content

Commit a94defd

Browse files
committed
Speed improvements for prime finder - especially for large ranges
1 parent ae702b0 commit a94defd

File tree

1 file changed

+29
-35
lines changed

1 file changed

+29
-35
lines changed

Prime/code.py

+29-35
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,40 @@
11
def SieveOfEratosthenes(range_to):
22

3-
# creating a boolean array first
4-
prime = [True for i in range(range_to + 1)]
5-
p = 2
6-
while (p * p <= range_to):
7-
8-
# If prime[p] is not changed, then it is a prime
9-
if (prime[p] == True):
10-
11-
# Update all multiples of p
12-
for i in range(p * 2, range_to + 1, p):
13-
prime[i] = False
14-
p += 1
15-
print([p for p in range(2, range_to) if prime[p]])
3+
# creating a boolean array first
4+
prime = [True for i in range(range_to + 1)]
5+
p = 2
6+
while (p * p <= range_to):
167

17-
def prime(range_from, range_to):
18-
19-
allList = [x for x in range(2, range_to + 1)]
8+
# If prime[p] is not changed, then it is a prime
9+
if (prime[p] == True):
10+
11+
# Update all multiples of p
12+
for i in range(p * 2, range_to + 1, p):
13+
prime[i] = False
14+
15+
p += 1
2016

21-
ptr = 0
22-
while True:
23-
i = 2
24-
while i * allList[ptr] <= range_to:
25-
if i*allList[ptr] in allList:
26-
allList.remove(i*allList[ptr])
27-
i += 1
28-
ptr += 1
29-
if allList[ptr] ** 2 > range_to:
30-
break
17+
print([p for p in range(2, range_to) if prime[p]])
3118

3219

33-
primeList = [x for x in allList if x > range_from]
34-
print("Prime List Between ", range_from, " and ", range_to, " is")
35-
print(primeList)
20+
def is_prime(num):
21+
for i in range(2, int(num / 2) + 1):
22+
if num % i == 0:
23+
return False
24+
return True
3625

26+
27+
def prime(range_from, range_to):
28+
allList = [num for num in range(range_from, range_to + 1) if is_prime(num)]
29+
30+
print("Prime List Between", range_from, "and", range_to, "is")
31+
print(allList)
3732

3833

3934
if __name__ == "__main__":
40-
print("Enter the range of number")
41-
range_from = int(input("From: "))
42-
range_to = int(input("To: "))
43-
44-
prime(range_from, range_to)
45-
SieveOfEratosthenes(range_to)
35+
print("Enter the range of number")
36+
range_from = int(input("From: "))
37+
range_to = int(input("To: "))
4638

39+
prime(range_from, range_to)
40+
SieveOfEratosthenes(range_to)

0 commit comments

Comments
 (0)