Задача #2877

Делители и маски

Уровень ЕГЭ

Пусть M - сумма минимального и максимального простых натуральных делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то значение M принимается равным нулю.

Напишите программу, которая перебирает целые числа, большие 1 200 000 в порядке возрастания и ищет среди них такие, для которых M больше 2000 и оканчивается на 8. В ответе запишите в первом столбце таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце - соответствующие им значения M.

Например, для числа 14 M = 2+7 = 9

Ответ
Войдите, чтобы история ответов и статистика сохранялись.
Решение Нажми, чтобы открыть

Ответ

1200005
2248
1200011
2388
1200037
17978
1200067
109108
1200197
2598
def div(x):
d = set()
for i in range(2, int(x**0.5)+1):
if x%i==0:
d.add(i)
d.add(x//i)
return sorted(d)

k = 0
for x in range(1_200_001,1_201_000):
d = [i for i in div(x) if len(div(i))==0]
if len(d)>0:
M = d[0]+d[-1]
if M>2000 and M%10==8:
print(x,M)
k += 1
if k==5: break
Быстрый переход
Перейти к задаче