(А. Кабанов) Обозначим через \(M\) разность максимального и минимального числа среди простых делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то считаем значение \(M\) равным нулю. Напишите программу, которая перебирает целые числа, большие \(450000,\) в порядке возрастания и ищет среди них такие, для которых значение \(M\) при делении на \(29\) даёт в остатке \(11.\) Выведите первые \(4\) найденных числа в порядке возрастания, справа от каждого числа запишите соответствующее значения \(M.\)
Решение:
Python
def prime_divs(n):
res = set()
for i in range(2, int(n**0.5) + 1):
while n % i == 0:
res.add(i)
n //= i
if n != 1:
res.add(n)
return res
q = 0
for x in range(450001, 10**10):
d = prime_divs(x)
d.discard(x)
M = max(d) - min(d) if d else 0
if M % 29 == 11:
print(x, M)
q += 1
if q == 4:
break
Ответ:
\(450006 \,\, 417\)
\(450038 \,\, 5231\)
\(450047 \,\, 2650\)
\(450051 \,\, 736\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене