Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

ПОМОГИТЕ С ЗАДАЧЕЙ ПО ИНФОРМАТИКЕ!

Кристина Смирнова Ученик (108), открыт 3 недели назад
1)Пусть S (N) – сумма трёх наибольших нетривиальных делителей числа N (не считая единицы и самого числа). Если у числа N меньше трёх таких делителей, то S (N) считается равным 0. Найдите 5 наименьших натуральных чисел, превышающих 10 000 000, для которых десятичная запись S (N) содержит не менее 4-х цифр 7. В ответе запишите найденные числа в порядке возрастания, справа от каждого числа запишите соответствующее ему значение S(N).

Не понимаю как найти сумму трех наибольших нетривиальных делителей n
1 ответ
Санёк Просто Знаток (335) 3 недели назад
Ну вот вроде как рабочий код который может помочь
import math

def sum_of_three_largest_divisors(N):
divisors = set()
limit = int(math.isqrt(N)) + 1
for i in range(2, limit):
if N % i == 0:
divisors.add(i)
divisors.add(N // i)
divisors.discard(1)
divisors.discard(N)
if len(divisors) < 3:
return 0
else:
return sum(sorted(divisors, reverse=True)[:3])

count = 0
N = 10000001
results = []

while count < 5:
S_N = sum_of_three_largest_divisors(N)
if str(S_N).count('7') >= 4:
results.append((N, S_N))
count += 1
N += 1

for N_value, S_N_value in results:
print(f"{N_value} {S_N_value}")
Похожие вопросы