Пусть \(M\) — разность максимального и минимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение \(M\) равным нулю.
Напишите программу, которая перебирает целые числа, меньшие \( 800~000\), в порядке убывания и ищет среди них такие, для которых значение \(M\) кратно \(23\) (нуль числу \(23\) не кратен). Вывести первые пять найденных чисел и соответствующие им значения \(M\).
Формат вывода: для каждого из пяти таких найденных чисел в отдельной строке сначала выводится само число, затем — значение \(M\).
Строки выводятся в порядке возрастания найденных чисел.
Например, для числа \(20\) \(M = 10 - 2 = 8\).
Решение:
Python
def M(n):
d = []
for x in range(2, int(n**0.5) + 1):
if n % x == 0:
d += [x, n // x]
return max(d) - min(d) if d else 0
q, n = 0, 800_000
while q < 5:
n -= 1
m = M(n)
if m and m % 23 == 0:
print(n, m)
q += 1
Ответ:
\(799995 \,\, 266662\)
\(799990 \,\, 399993\)
\(799987 \,\, 16974\)
\(799944 \,\, 399970\)
\(799907 \,\, 27554\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене