Тип 25 № 38959 
Раздел кодификатора ФИПИ: Обработка целочисленной информации. Нахождение делителей
i
Пусть M (N) — произведение 5 наименьших различных натуральных делителей натурального числа N, не считая единицы. Если у числа N меньше 5 таких делителей, то M (N) считается равным нулю.
Найдите 5 наименьших натуральных чисел, превышающих 200 000 000, для которых 0 < M (N) < N. В ответе запишите найденные значения M (N) в порядке возрастания соответствующих им чисел N.
Решение. Будем последовательно рассматривать каждое целое число, большее 200 000 000. В каждом таком числе будем находить первые 5 натуральных делителей, умножая их между собой, если результат произведения не будет превышать значения самого числа. Если результат произведения первых 5 натуральных делителей числа, не считая единицы, будет меньше самого числа, будем выводить результат произведения на экран.
Приведём решение на языке Pascal.
var
i, j, halfI, del: int64;
countDel, count: integer;
begin
count := 0;
i := 200000001;
while (count < 5) do begin
halfI := i div 2;
del := 1;
countDel := 0;
for j := 2 to halfI do
if (i mod j = 0) then begin
countDel := countDel + 1;
del := del * j;
if del > i then break
else if countDel = 5 then begin
writeln(del);
count := count + 1;
break;
end;
end;
i := i + 1;
end;
end.
В результате работы программа должна вывести следующее:
1728
21632
1260
1152
4127787
Приведём решение Влада Сафонова на языке Python.
zn=[]
for x in range(200000001,200000100):
de=set()
for d in range(1,round(x**0.5)+1):
if x%d==0:
de.add(d)
de.add(x//d)
if len(de)>5:
de=sorted(de)
p=de[5]*de[1]*de[2]*de[3]*de[4]
if p<x:
zn.append(p)
print((zn)[:5])
Ответ: 1728&21632&1260&1152&4127787
38959
1728 21632 1260 1152 4127787
Раздел кодификатора ФИПИ: