03.07.2025

ЕГЭ по информатике. Задание 25. Поиск чисел, представленных в виде произведения ровно двух простых множителей, не обязательно различных

Задача. Напишите программу, которая перебирает целые числа, большие 6 651 220, в порядке возрастания и ищет среди них числа, представленные в виде произведения ровно двух простых множителей, не обязательно различных, каждый из которых содержит в своей записи ровно одну цифру 2.

В ответе в первом столбце таблицы запишите первые 5 найденных чисел в порядке возрастания, а во втором столбце - для каждого из чисел соответствующий им наибольший из найденных множителей.

Источник: kompege.ru

Пример числа:

Число 6651241 можно разложить на 2579 × 2579, и оба этих множителя — простые числа, содержащие ровно одну цифру "2".

Напишем функцию, которая возвращает список простых множителей, в виде произведения которых можно представить заданное натуральное число.

def f(n):

    a = []

    for k in range(2,int(n**0.5)+1):

        while n%k==0:

            a.append(k)

            n//=k

    if n>1:

        a.append(n)

    return a

  • В цикле для k от 2 до √n: пока число n делится на k, добавляем число k в список множителей.

  • После разложения, если n > 1, значит, оно простое и его тоже добавляем в список.

Проверяем работу функции

print(f(12)) # вывод [2, 2, 3]

print(f(424)) # вывод [2, 2, 2, 53]

print(f(6889)) # вывод [83, 83]

print(f(17)) # вывод [17]

Решаем задачу

p = 0  # Счётчик найденных чисел

x = 6_651_220 + 1  # Начинаем с числа после 6 651 220

while p != 5:

    y = f(x) # Получаем список множителей для числа x

    if len(y) == 2:  # Если у числа x ровно два простых множителя

        # Проверяем, что в каждом множителе ровно одна цифра "2"

        if str(y[0]).count('2') == 1 and str(y[1]).count('2') == 1:

            print(x, max(y))  # Выводим число и наибольший множитель

            p += 1

    x += 1  # Переходим к следующему числу

Вывод:

6651241 2579

6651262 3325631

6651286 3325643

6651314 3325657

6651347 289189

03.01.2025

Идет невисокосный год. Сколько дней до Нового года?

 Задача. Пусть идет невисокосный год. Сколько дней до Нового года? 

Сохраним количество дней в каждом месяце в списке days.

Применим срезы по-новогоднему :)

Программа на Python

print('Год не високосный. Сколько дней до Нового года? Введите текущие')

m = int(input('месяц: '))

d = int(input('день: '))

days = [31,28,31,30,31,30,31,31,30,31,30,31]

print('До Нового года: ',sum(days[m-1:])- d + 1,' дн.')

Еще бы выводить сообщение об ошибочных данных, если пользователь введет не то, что нужно (допишем еще)

Запуск на текущий момент 

Год не високосный. Сколько дней до Нового года? Введите текущие

месяц: 1

день: 3

До Нового года:  363  дн.