Найти в Дзене

Разбор номера 23282 #КЕГЭ по информатике #ЕГЭ25

Автор: Основная волна 11.06.25
Уровень: Средний Пусть М - сумма минимального и максимального простых натуральных делителей целого числа, не считая самого числа. Напишите программу, которая перебирает целые числа, большие 5 400 000, в порядке возрастания и ищет среди них такие, для которых М больше 60 000 и является палиндромом, т.е. одинаково читается слева направо и справа налево. В ответе запишите в первом столбце таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце - соответствующие им значения М. Больше разборов на эту и другие задачи вы можете найти в нашем Телеграм канале: Информатика ЕГЭ | itpy 👨‍💻 Подписывайтесь на наш канал по теории Python: Азим вкатывается в IT | itpy 💻  Вы найдете тут много полезного!
Оглавление

Автор: Основная волна 11.06.25
Уровень: Средний

Условие задачи:

Пусть М - сумма минимального и максимального простых натуральных делителей целого числа, не считая самого числа.

Напишите программу, которая перебирает целые числа, большие 5 400 000, в порядке возрастания и ищет среди них такие, для которых М больше 60 000 и является палиндромом, т.е. одинаково читается слева направо и справа налево.

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

Код решения:

Ответ: 
5400042 900009
5400420 90009
5400866 158851
5406116 1351531
5406420 90109
Ответ: 5400042 900009 5400420 90009 5400866 158851 5406116 1351531 5406420 90109

Комментарии к коду:

  1. def prime(x):
    Объявление функции для проверки, является ли число простым
  2. if x <= 1:
    Проверяем, если число меньше или равно 1
  3. return False
    Числа ≤ 1 не являются простыми
  4. for i in range(2, int(x**0.5)+1):
    Перебираем возможные делители от 2 до квадратного корня из x
  5. if x % i == 0:
    Проверяем, делится ли x на i без остатка
  6. return False
    Если нашли делитель, число не простое
  7. return True
    Если делителей не найдено, число простое
  8. def d(x):
    Объявление функции для нахождения всех делителей числа x
  9. a=[]
    Создаем пустой список для делителей
  10. for i in range(2, int(x**0.5)+1):
    Перебираем числа от 2 до квадратного корня из x
  11. if x%i==0:
    Проверяем, является ли i делителем x
  12. a+=[i, x//i]
    Добавляем в список сам делитель i и парный ему делитель x//i
  13. return sorted(set(a))
    Возвращаем отсортированный список уникальных делителей
  14. k=0
    Счетчик найденных чисел
  15. for i in range(5400001, 10**10):
    Бесконечный цикл начиная с 5 400 001
  16. a=[j for j in d(i) if prime(j) == True]
    Создаем список простых делителей числа i
  17. if len(a)>0:
    Проверяем, что есть хотя бы один простой делитель
  18. M=min(a)+max(a)
    Вычисляем M как сумму минимального и максимального простого делителя
  19. if M>60000:
    Проверяем, что M больше 60 000
  20. if str(M)[::-1] == str(M):
    Проверяем, является ли M палиндромом (читается одинаково в обе стороны)
  21. print(i, M)
    Выводим число i и значение M
  22. k += 1
    Увеличиваем счетчик найденных чисел
  23. if k==5:
    Проверяем, найдено ли уже 5 чисел
  24. break
    Прерываем цикл после нахождения 5 подходящих чисел
Больше разборов на эту и другие задачи вы можете найти в нашем Телеграм канале: Информатика ЕГЭ | itpy 👨‍💻
Подписывайтесь на наш канал по теории Python: Азим вкатывается в IT | itpy 💻  Вы найдете тут много полезного!