Пусть М — сумма минимального и максимального простых натуральных делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то значение М считается равным нулю.
Напишите программу, которая перебирает целые числа, большие 5 400 000, в порядке возрастания и ищет среди них такие, для которых М больше 60 000 и является палиндромом, т.е. одинаково читается слева направо и справа налево.
В ответе запишите в первом столбце таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце — соответствующие им значения М.
Например, для числа 298 M = 2 + 149 = 151.
Количество строк в таблице для ответа избыточно.
Основная волна 11.06.2025 ЕГЭ по информатике – задание №25
Решение:
Решение на Python
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
def div(x): d = set() for i in range(2, int(x**0.5)+1): if x % i == 0: d.add(i) d.add(x//i) return sorted(d) def p(x): for i in range(2, int(x**0.5)+1): if x % i == 0: return False return True def polindrom(x): a = str(x) if a[0]==a[-1] and a[1]==a[-2] and a[2]==a[-3]: return True return False k=0 for x in range(5_400_000, 5_500_000): if k==5: break d = [i for i in div(x) if p(i)] if len(d)>=2 and d[0]+d[-1]>60_000 and polindrom(d[0]+d[-1]): print(x, d[0]+d[-1]) k+=1 |
Ответ:
5400042 900009
5400420 90009
5400866 158851
5406116 1351531
5406420 90109