Рассмотрим произвольное натуральное число, представим его всеми возможными способами в виде произведения двух натуральных чисел и найдём для каждого такого произведения разность сомножителей. Например, для числа \(18\) получим: \(18 = 18 \cdot 1 = 9 \cdot 2 = 6 \cdot 3,\) множество разностей содержит числа \(17, \, 7\) и \(3.\) Подходящей будем называть пару сомножителей, разность между которыми не превышает \(90.\) Найдите все натуральные числа, принадлежащие отрезку \([500000; \,1000000],\) у которых есть не менее трёх подходящих пар сомножителей. В ответе перечислите найденные числа в порядке возрастания, справа от каждого запишите наибольший из всех сомножителей, образующих подходящие пары.
Решение:
Python
for n in range(500000, 1000001):
div_pair = {(i, n // i) for i in range(2, int(n ** 0.5) + 1) if n % i == 0}
ans = [(x, y) for x, y in div_pair if abs(y - x) <= 90]
if len(ans) > 2:
ans.sort()
print(n, ans[0][1])
Ответ:
\(540540 \,\, 780\)
\(619344 \,\, 828\)
\(637560 \,\, 840\)
\(752400 \,\, 912\)
\(865800 \,\, 975\)
\(889200 \,\, 988\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене