Пусть M — сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то
Напишите программу, которая перебирает целые числа, бо́льшие 700 000, в порядке возрастания и ищет среди них такие, для которых
Формат вывода: для каждого из пяти таких найденных чисел в отдельной строке сначала выводится само число, затем —
Строки выводятся в порядке возрастания найденных чисел.
Количество строк в таблице для ответа избыточно.
Ответ:
Заметим, что у каждого числа делители парные, например,
Приведём решение на языке Pascal.
var
count, j, k, sqrtI, num: longint;
begin
num := 700000;
count := 0;
while True do begin
sqrtI := round(sqrt(num));
for j := 2 to sqrtI do begin
if num mod j = 0 then begin
if (j + num div j) mod 10 = 8 then begin
count := count + 1;
writeln(num, ' ', j + num div j);
break;
end
else break;
end;
end;
if count = 5 then break;
num := num + 1;
end;
end.
В результате работы программа должна вывести следующее:
700005 233338
700007 100008
700012 350008
700015 140008
700031 24168
Приведём решение Виктора Кима на языке Python.
count = 0
num = 700000
while count < 5:
num += 1
mx = 0
mn = num + 1
for i in range(2,int(num // 2)+1):
if num % i == 0:
mx = max(mx,i)
mn = min(mn,i)
M = mn + mx
if (M != num + 1) and (M % 10 == 8):
print(num, M)
count += 1
Приведём другое решение Мамаева Романа на языке Python.
count_del = 0
i = 700_000
while count_del < 5:
i += 1
for j in range(2, int(i ** 0.5) + 1):
if i % j == 0:
if i / j == i:
break
if (i / j + j) % 10 == 8:
print(i, i // j + j)
count_del += 1
break

