Пусть — разность максимального и минимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение равным нулю.
Напишите программу, которая перебирает целые числа, меньшие 800 000, в порядке убывания и ищет среди них такие, для которых значение кратно 23 (нуль числу 23 не кратен). Вывести первые пять найденных чисел и соответствующие им значения . Формат вывода: для каждого из пяти таких найденных чисел в отдельной строке сначала выводится само число, затем — значение .
Строки выводятся в порядке убывания найденных чисел.
Например, для числа 20 .
Решение:
Решение на Python:
def d(x):
dels = set()
for i in range(2, int(x**0.5)+1):
if x % i == 0:
dels.add(i)
dels.add(x//i)
return dels
for x in range(800000, 0, -1):
dels = d(x)
if len(dels) > 0:
M = max(dels)-min(dels)
else:
M = 0
if M % 23 == 0 and M != 0:
print(x, M)
Ответ:
| 799995 | 266662 |
| 799990 | 399993 |
| 799987 | 16974 |
| 799944 | 399970 |
| 799907 | 27554 |
Ответ: