(А. Комков) Пусть \(A\) – абсолютное значение разности максимального четного и максимального нечетного делителей числа, не считая единицы и самого числа. Если хотя бы одного из таких делителей у числа нет, то считаем значение \(A\) равным нулю. Напишите программу, которая перебирает целые числа, большие \(250156,\) в порядке возрастания и ищет среди них первые \(5,\) для которых значение \(A\) является простым числом, оканчивающимся на \(9.\) Для каждого из найденных чисел в отдельной строке сначала выводить само число, затем значение \(A.\) Строки выводятся в порядке возрастания найденных чисел.
Решение:
Python
from math import isqrt
def is_prime(n):
if n <= 2:
return n == 2
if n & 1 == 0:
return False
for i in range(3, isqrt(n) + 1, 2):
if n % i == 0:
return False
return True
q = 0
n = 250156
while q < 5:
n += 1
divs = {d for i in range(2, isqrt(n) + 1) if n % i == 0
for d in (i, n // i)}
odd_d = [d for d in divs if d & 1 == 1]
even_d = [d for d in divs if d & 1 == 0]
if not odd_d or not even_d:
continue
A = abs(max(odd_d) - max(even_d))
if is_prime(A) and A % 10 == 9:
print(n, A)
q += 1
Ответ:
\(250196 \,\, 62549\)
\(250314 \,\, 41719\)
\(250374 \,\, 41729\)
\(250442 \,\, 125219\)
\(250554 \,\, 41759\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене