Пусть \(M\) — разность максимального и минимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение \(M\) равным нулю.
Напишите программу, которая перебирает целые числа, большие \( 860~000\), в порядке возрастания и ищет среди них такие, для которых значение \(M\) оканчивается на \(30\). Вывести первые пять найденных чисел и соответствующие им значения \(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, 860_000
while q < 5:
n += 1
m = M(n)
if m % 100 == 30:
print(n, m)
q += 1
Ответ:
\(860064 \,\, 430030\)
\(860199 \,\, 286730\)
\(860264 \,\, 430130\)
\(860464 \,\, 430230\)
\(860499 \,\, 286830\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене