Вы можете разбить это на две части: (A) найти наибольший простой множитель для любого заданного числа n
и (B) суммировать наибольшие простые множители каждого из девяти последовательных чисел, начиная с n
. Я опишу код для каждого, а затем объединю их.
(A) Мы можем найти наибольший простой множитель для числа n
, lpf(n)
, с кодом ниже:
def lpf(n):
i = 2
while i * i <= n:
if n % i:
i += 1
else:
n //= i
return n
(B) Затем мы можем запустить этот код для каждого числа от n
до n+9
, сопоставив функцию lpf
с range(n, n+9)
и суммировав результат:
def find_g(n):
return sum(map(lpf, range(n, n+9)))
Для вашего случая n=10
мы получим
find_g(10) = 66
Это правильно, потому что наибольшие простые множители для [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] составляют, соответственно, [5, 11, 3, 13, 7, 5, 2, 17, 3].
(Обратите внимание, что ваш ожидаемый ответ неверен, вы можете понять, почему?)