(А. Сражаев) Напишите программу, которая перебирает целые нечетные числа, бóльшие \(5~000~000,\) в порядке возрастания и ищет среди них такие, которые можно представить в виде произведения двух различных нечётных простых множителей, разность которых является простым числом. В ответе запишите в первой строке таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце – для каждого из них соответствующий наибольший из найденных множителей.
Решение:
Python
def factor(n):
ans = []
for i in range(2, int(n**0.5) + 1):
while n % i == 0:
ans.append(i)
n //= i
if n > 1:
ans.append(n)
return ans
def is_prime(n):
if n <= 2:
return n == 2
if n & 1 == 0:
return False
for i in range(3, int(n**0.5) + 1, 2):
if n % i == 0:
return False
return True
q = 0
n = 5_000_001
while q < 5:
d = factor(n)
if len(set(d)) == len(d) == 2 and is_prime(d[1] - d[0]):
print(n, max(d))
q += 1
n += 2
Ответ:
\(5008643 \,\, 2239\)
\(5143823 \,\, 2269\)
\(5336099 \,\, 2311\)
\(5475599 \,\, 2341\)
\(5673923 \,\, 2383\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене