Задания
Версия для печати и копирования в MS Word
Тип 25 № 46983
i

Пусть M (N)  — пятый по ве­ли­чи­не де­ли­тель на­ту­раль­но­го числа N без учёта са­мо­го числа и еди­ни­цы. На­при­мер, M(1000)  =  100.

Если у числа N мень­ше 5 раз­лич­ных де­ли­те­лей, не счи­тая еди­ни­цы и са­мо­го числа, счи­та­ем, что M (N)  =  0.

Най­ди­те 5 наи­мень­ших на­ту­раль­ных чисел, пре­вы­ша­ю­щих 460 000 000, для ко­то­рых M (N) > 0. В от­ве­те за­пи­ши­те най­ден­ные зна­че­ния M (N) в по­ряд­ке воз­рас­та­ния со­от­вет­ству­ю­щих им чисел N.

 

Ответ:

Спрятать решение

Ре­ше­ние.

Будем по­сле­до­ва­тель­но рас­смат­ри­вать каж­дое целое число, боль­шее 460 000 000. В каж­дом таком числе будем на­хо­дить наи­мень­шие шесть на­ту­раль­ных де­ли­те­лей. Если у числа есть по край­ней мере пять де­ли­те­лей, не счи­тая еди­ни­цы и са­мо­го числа, будем вы­во­дить ре­зуль­тат де­ле­ния числа на пятый най­ден­ный де­ли­тель.

 

При­ведём ре­ше­ние на языке Pascal.

var

i, j, halfI, del: int64;

countDel, count: integer;

begin

count := 0;

i := 460000001;

while (count < 5) do begin

halfI := i div 2;

del := 0;

countDel := 0;

for j := 2 to halfI do

if (i mod j = 0) then begin

countDel := countDel + 1;

if countDel = 5 then begin

writeln(i div j);

count := count + 1;

break;

end;

end;

i := i + 1;

end;

end.

В ре­зуль­та­те ра­бо­ты про­грам­ма долж­на вы­ве­сти сле­ду­ю­щее:

41818182

261959

5

271

57500001

 

При­ме­ча­ние.

Пятый по ве­ли­чи­не де­ли­тель  — пятый де­ли­тель из пяти наи­боль­ших де­ли­те­лей числа. То есть для числа 1000 пять наи­боль­ших де­ли­те­лей, не счи­тая еди­ни­цы и са­мо­го числа,  — 500, 250, 200, 125, 100, пятый по ве­ли­чи­не  — 100.

 

При­ведём ре­ше­ние на языке Python.

count = 0

i = 460000001

while count < 5:

halfI = i // 2

countDel = 0

for j in range(2, halfI + 1):

if i % j == 0:

countDel += 1

if countDel == 5:

print(i // j)

count += 1

break

i += 1


Аналоги к заданию № 46983: 47022 Все