Пусть M — сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то
Напишите программу, которая перебирает целые числа, бо́льшие 700 000, в порядке возрастания и ищет среди них такие, для которых
Формат вывода: для каждого из пяти таких найденных чисел в отдельной строке сначала выводится само число, затем —
Строки выводятся в порядке возрастания найденных чисел.
Количество строк в таблице для ответа избыточно.
Ответ:
Приведём решение на языке Python.
def deliteli(n):
deliteli = []
for i in range(2, int(n**0.5)+1):
if n % i == 0:
deliteli.append(i)
deliteli.append(n//i)
return deliteli
count = 0
for j in range(700_000, 10**6):
d = deliteli(j)
if len(d) != 0:
M = max(d) + min(d)
if M % 10 == 4:
print(j, M)
count += 1
if count == 5:
break
В результате работы программа должна вывести следующее:
700004 350004
700009 41194
700023 233344
700024 350014
700044 350024
Приведём решение Юрия Красильникова на языке Python.
def delit(n):
d = set()
k = 2
while k**2 <= n:
if n%k == 0:
d |= {k,n//k}
k += 1
return sorted(d)
n,k = 700000,0
while k < 5:
n += 1
d = delit(n)
if d:
m = min(d)+max(d)
if m%10 == 4:
k += 1
print(n,m)

