Задача #2879
Делители и маски
Обозначим через M сумму максимального и минимального числа среди простых делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то считаем значение M равным нулю. Напишите программу, которая перебирает целые числа, большие 23 600 000, в порядке возрастания и ищет среди них такие, для которых значение M при делении на 213 даёт в остатке 171.
Выведите первые 6 найденных чисел в порядке возрастания, справа от каждого числа запишите соответствующее значения M.
Количество строк для записи ответа избыточно.
Войдите, чтобы история ответов и статистика сохранялись.
Решение
Ответ
23600182
694125
23600442
28713
23600478
357585
23600570
1449
23600838
135639
23600970
29139
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(23_600_001,23_601_000):
d = [i for i in div(x) if len(div(i))==0]
M = d[0]+d[-1] if len(d)>0 else 0
if M%213==171:
print(x,M)
k += 1
if k==6: break