Напишите программу, которая перебирает целые числа, большие 600 000, в порядке возрастания и ищет среди них такие, среди делителей которых есть хотя бы одно число, оканчивающееся
Формат вывода: для каждого
Количество строк в таблице для ответа избыточно.
Ответ:
Будем последовательно рассматривать каждое целое число, большее 600 000. В каждом таком числе будем перебирать делители числа, проверяя, оканчивается ли делитель
Приведём решение на языке Pascal.
var
i, j, halfI: longint;
count: integer;
begin
count := 0;
i := 600001;
while (count < 5) do begin
halfI := i div 2;
for j := 2 to halfI do
if (i mod j = 0) and (j mod 10 = 7) and (j <> 7) then begin
writeln(i, ' ', j);
count := count + 1;
break;
end;
i := i + 1;
end;
end.
В результате работы программа должна вывести следующее:
600001 437
600002 47
600003 1227
600005 217
600012 16667
Приведём решение на языке Python.
count = 0
i = 600001
while count < 5:
halfI = i // 2
for j in range(2, halfI + 1):
if i % j == 0 and j % 10 == 7 and j != 7:
print(i, ' ', j)
count += 1
break
i += 1
Приведём решение Дашкина Семёна на языке Python.
c = 0
x = 600000
while c < 5:
x += 1
a = []
for d in range(17,x//2 + 1, 10):
if x % d == 0:
a.append(d)
if len(a) > 0:
c += 1
print(x, min(a))
Приведём решение Десяткина Александра на языке Python.
a = 600000
count = 0
while count < 5:
a+=1
for i in range(17,a//2+1,10):
if a%i==0:
print(a, i)
count+=1
break
Приведём решение Егора Чернецова на языке Python.
n, c = 600001, 0
while c < 5:
(d := next((i for i in range(17, n, 10) if n % i == 0), 0)) and (print(n, d) or (c := c + 1)); n += 1
-------------
Дублирует задание № 37130.

