Пусть М - сумма минимального и максимального простых натуральных делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то значение М считается равным нулю.
Напишите программу, которая перебирает целые числа, большие 5 400 000, в порядке возрастания и ищет среди них такие, для которых М больше 60 000 и является палиндромом, т.е. одинаково читается слева направо и справа налево. В ответе запишите в первом столбце
таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце - соответствующие им значения М.
Например, для числа 298 M = 2 + 149 = 151.
Решение:
Решение на Python:
def prime(x):
for i in range(2, int(x**0.5)+1):
if x % i == 0:
return False
return True
def divs(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)
k = 0
for x in range(5400000, 10**10):
if k == 5: break
d = [i for i in divs(x) if prime(i)]
if len(d) > 0:
M = min(d)+max(d)
if M > 60000 and str(M) == str(M)[::-1]:
print(x, M)
k += 1
Ответ:
| 15400042 | 900009 |
| 5400420 | 90009 |
| 5400866 | 158851 |
| 5406116 | 1351531 |
| 5406420 | 90109 |
Ответ: