(М. Фирсов) На отрезке \([100~000; \, 500~000]\) найдите такие числа, у которых больше \(3\) различных простых делителей, причем все они образуют арифметическую прогрессию с разностью отличной от нуля. В качестве ответа запишите найденные числа в порядке возрастания, справа от каждого числа запишите произведение количества простых делителей на разность их арифметической прогрессии.
Решение:
Python
def prime(limit):
t = [1] * limit
b = int(limit**0.5) + 1
for i in range(2, limit):
if t[i]:
if i < b:
for j in range(i**2, limit, i):
t[j] = 0
yield i
def factor(n):
mul = []
for p in prime(int(n**0.5) + 1):
while n % p == 0:
mul.append(p)
n //= p
if n > 1:
mul.append(n)
return mul
for n in range(100_000, 500_001):
m = set(factor(n))
if len(m) > 3:
ml = sorted(list(m))
d = set(y - x for x, y in zip(ml, ml[1:]))
if len(d) == 1:
print(n, len(m) * d.pop())
Ответ:
\(101065 \,\, 48\)
\(107525 \,\, 24\)
\(124729 \,\, 24\)
\(177289 \,\, 48\)
\(236555 \,\, 24\)
\(278185 \,\, 72\)
\(365585 \,\, 24\)
\(494615 \,\, 24\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене