*(Д. Статный) Среди натуральных чисел, принадлежащих промежутку \([100~000~000; \, 500~000~000],\) найдите все числа, имеющие ровно \(7\) делителей, отличных от \(1\) и самого числа. В ответ запишите \(5\) наибольших из найденных чисел в порядке возрастания, справа от каждого числа запишите его максимальный делитель, отличный от самого числа.
Решение:
Python
from math import isqrt
def factor(n):
res = []
for d in range(2, isqrt(n) + 1):
while n % d == 0:
res.append(d)
n //= d
if n > 1:
res.append(n)
return res
q = 0
res = []
for n in range(isqrt(500_000_000), isqrt(100_000_000), -1):
divs = factor(n)
if len(divs) == len(set(divs)) == 2:
res.append((n**2, divs[0] * divs[1]**2))
q += 1
if q == 5:
break
for n, d in res[::-1]:
print(n, d)
Ответ:
\(499164964 \,\, 249582482\)
\(499343716 \,\, 249671858\)
\(499656609 \,\, 166552203\)
\(499701316 \,\, 249850658\)
\(499835449 \,\, 6327031\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене