Skip to content

Commit 24c99a6

Browse files
Update sol1.py
1 parent 2d32910 commit 24c99a6

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

project_euler/problem_095/sol1.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,18 @@ def sum_primes(primes_degrees: dict[int, int], num: int) -> int:
4747
)
4848

4949

50-
def generate_primes(num: int) -> list[int]:
50+
def generate_primes(max_num: int) -> list[int]:
5151
"""
52-
Calculates the list of primes up to and including `num`.
52+
Calculates the list of primes up to and including `max_num`.
5353
5454
>>> generate_primes(6)
5555
[2, 3, 5]
5656
"""
57-
are_primes = [True] * (num + 1)
57+
are_primes = [True] * (max_num + 1)
5858
are_primes[0] = are_primes[1] = False
59-
for i in range(2, isqrt(num) + 1):
59+
for i in range(2, isqrt(max_num) + 1):
6060
if are_primes[i]:
61-
for j in range(i * i, num + 1, i):
61+
for j in range(i * i, max_num + 1, i):
6262
are_primes[j] = False
6363

6464
return [prime for prime, is_prime in enumerate(are_primes) if is_prime]
@@ -131,12 +131,11 @@ def solution(max_num: int = 1000000) -> int:
131131
12496
132132
"""
133133

134-
primes = generate_primes(max_num)
135-
chain = [0] * (max_num + 1)
136-
for p in primes:
137-
if p * p > max_num:
138-
break
139-
multiply(chain, primes, p, 1, max_num, 0, {})
134+
isqrt_max_num = isqrt(max_num)
135+
primes = generate_primes(isqrt_max_num)
136+
chain = [0] * (isqrt_max_num + 1)
137+
for prime in primes:
138+
multiply(chain, primes, prime, 1, max_num, 0, {})
140139

141140
chain_start, _ = find_longest_chain(chain, max_num)
142141
return chain_start

0 commit comments

Comments
 (0)