Пусть M (N) — произведение
Найдите 5 наименьших натуральных чисел, превышающих 200 000 000, для которых 0 < M (N) < N. В ответе запишите найденные
Ответ:
Будем последовательно рассматривать каждое целое число, большее 200 000 000. В каждом таком числе будем находить
Приведём решение на языке 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])
Приведём решение Сергея Донец на PascalABC.NET:
uses School;
begin
var k := 0;
var n := 200_000_001;
var res := new List< BigInteger >();
while k < 5 do begin
var divisors := n.Divisors.Skip(1).Take(5).ToArray();
if divisors.Length = 5 then begin
var M := divisors.Aggregate(1bi, (a, b) -> a * b);
if M < n then begin res.Add(M);k += 1;end;end;
n += 1;end;
res.Printlines;
end.

