@@ -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
97103def 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