*(Д. Статный) Среди натуральных чисел, принадлежащих промежутку \([100~000~000; \, 150~000~000],\) найдите все числа, у которых \(3\) наименьших делителя, отличных от \(1\) и самого числа, попарно простые. В ответ укажите первые \(7\) найденных чисел в порядке возрастания, а справа от них – максимальный делитель, отличный от самого числа.
Решение:
Python
from math import gcd, isqrt
from itertools import combinations
def divs(n):
d = set()
for x in range(2, isqrt(n) + 1):
if n % x == 0:
d.add(x)
d.add(n // x)
if len(d) > 5:
break
return list(d)
q = 0
for n in range(10**8, 15 * 10**7):
d = divs(n)
if len(d) >= 3:
d.sort()
if all(gcd(a, b) == 1 for a, b in combinations(d[:3], 2)):
print(n, max(d))
q += 1
if q == 7:
break
Ответ:
\(100000005 \,\, 33333335\)
\(100000021 \,\, 9090911\)
\(100000029 \,\, 33333343\)
\(100000031 \,\, 353357\)
\(100000050 \,\, 50000025\)
\(100000051 \,\, 636943\)
\(100000054 \,\, 50000027\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене