Напишите программу, которая перебирает целые числа, большие 6 651 220, в порядке возрастания и ищет среди них числа, представленные в виде произведения ровно двух простых множителей, не обязательно различных, каждый из которых содержит в своей записи ровно одну цифру 2.
В ответе в первом столбце таблицы запишите первые 5 найденных чисел в порядке возрастания, а во втором столбце — для каждого из чисел соответствующий им наибольший из найденных множителей.
Количество строк в таблице для ответа избыточно.
Резервный день 19.06.2025 ЕГЭ по информатике – задание №25
Решение:
Решение на Python
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
def p(x): return x > 1 and all(x % i != 0 for i in range(2, int(x ** 0.5) + 1)) def div(x): for i in range(2, int(x ** 0.5) + 1): if x % i == 0 and p(i) and p(x // i) and str(i).count('2') == 1 and str(x // i).count('2') == 1: return [i, x // i] return [] k = 0 for x in range(6_651_221, 6_700_000): if k == 5: break d = div(x) if len(d) > 0: print(x, max(d)) k += 1 |
Ответ:
6651241 2579
6651262 3325631
6651286 3325643
6651314 3325657
6651347 289189
Пошаговое объяснение
-
Функция
p(x)
Проверяет, является ли числоxпростым.
ВозвращаетTrue, еслиxбольше 1 и не имеет делителей от 2 до √x. -
Функция
div(x)-
Перебирает возможные делители числа
xдо √x. -
Если
i— делитель числаx, и оба числа (iиx // i) простые,
причём каждое из них содержит ровно одну цифру «2»,
функция возвращает список[i, x // i].
-
-
Основной цикл
-
Перебирает числа, начиная с 6 651 221.
-
Для каждого числа вызывает
div(x). -
Если найдено подходящее разложение, выводит число и наибольший множитель.
-
Останавливается после нахождения пяти таких чисел.
-
