Skip to content

Commit 7c8138e

Browse files
Update sol1.py
1 parent ca6abd9 commit 7c8138e

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

project_euler/problem_095/sol1.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,29 +69,35 @@ def multiply(
6969
primes: list[int],
7070
prime: int,
7171
prev_n: int,
72-
n_max: int,
72+
max_num: int,
7373
prev_sum: int,
74-
primes_d: dict[int, int],
74+
primes_degrees: dict[int, int],
7575
) -> None:
7676
"""
7777
Run over all prime combinations to generate non-prime numbers.
7878
79-
>>> multiply([None] * 3, [2], 2, 1, 2, 0, {})
79+
>>> chain = [0] * 3
80+
>>> primes_degrees = {}
81+
>>> multiply(chain=chain, primes=[2], prime=2, prev_n=1, max_num=2, prev_sum=0, primes_degrees=primes_degrees)
82+
>>> chain
83+
[0, 0, 0]
84+
>>> primes_degrees
85+
{}
8086
"""
8187

82-
number = prev_n * prime
88+
num = prev_n * prime
8389
primes_d[prime] = primes_d.get(prime, 0) + 1
8490
if prev_n % prime != 0:
8591
new_sum = prev_sum * (prime + 1) + prev_n
8692
else:
87-
new_sum = sum_primes(primes_d, number)
88-
chain[number] = new_sum
93+
new_sum = sum_primes(primes_d, num)
94+
chain[num] = new_sum
8995
for p in primes:
9096
if p >= prime:
9197
number_n = p * number
92-
if number_n > n_max:
98+
if number_n > max_num:
9399
break
94-
multiply(chain, primes, p, number, n_max, new_sum, primes_d.copy())
100+
multiply(chain=chain, primes=primes, prime=p, prev_n=num, max_num=max_num, prev_sum=new_sum, primes_degrees=primes_degrees.copy())
95101

96102

97103
def find_longest_chain(chain: list[int], max_num: int) -> int:
@@ -137,7 +143,7 @@ def solution(max_num: int = 1000000) -> int:
137143
if prime**2 > max_num:
138144
break
139145

140-
multiply(chain, primes, prime, 1, max_num, 0, {})
146+
multiply(chain=chain, primes=primes, prime=prime, prev_n=1, max_num=max_num, prev_sum=0, primes_degrees={})
141147

142148
return find_longest_chain(chain, max_num)
143149

0 commit comments

Comments
 (0)