Задания
Версия для печати и копирования в MS Word

На­пи­ши­те про­грам­му, ко­то­рая ищет среди целых чисел, при­над­ле­жа­щих чис­ло­во­му от­рез­ку [120115; 120200], число, име­ю­щее мак­си­маль­ное ко­ли­че­ство раз­лич­ных на­ту­раль­ных де­ли­те­лей, если таких чисел не­сколь­ко  — най­ди­те мак­си­маль­ное из них. Вы­ве­ди­те на экран ко­ли­че­ство де­ли­те­лей та­ко­го числа и само число.

На­при­мер, в диа­па­зо­не [80; 90] мак­си­маль­ное ко­ли­че­ство раз­лич­ных на­ту­раль­ных де­ли­те­лей имеет число 90, по­это­му для этого диа­па­зо­на вывод на экра­не долж­на со­дер­жать сле­ду­ю­щие зна­че­ния:

12 90

Ответ:

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

Ре­ше­ние.

Решим за­да­чу пе­ре­бо­ром. Будем про­ве­рять ко­ли­че­ство де­ли­те­лей каж­до­го числа из диа­па­зо­на, если их ко­ли­че­ство наи­боль­шее  — за­пи­сы­ва­ем ко­ли­че­ство де­ли­те­лей и само число в за­ра­нее объ­яв­лен­ные пе­ре­мен­ные. После этого вы­во­дим эти числа на экран.

 

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

var

maxNum, numDel, maxDel, i, j: longint;

begin

maxNum := 0;

maxDel := 0;

for i := 120115 to 120200 do begin

numDel := 0;

for j := 1 to i do begin

if (i mod j = 0) then begin

numDel := numDel + 1;

end;

end;

if (numDel >= maxDel) then begin

maxDel := numDel;

maxNum := i;

end;

end;

writeln(maxDel, ' ', maxNum);

end.

 

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

128 120120

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

maxi = 0

for i in range(120115, 120201):

numdel = 0

for j in range(1, i + 1):

if i % j == 0:

numdel += 1

if numdel >= maxi:

maxi = numdel

maxinum = i

print(maxi, maxinum)

 

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

def Factorize(n: int) -> list:

ret = []

factor = 2

while factor ** 2 <= n:

if n%factor == 0:

n //= factor

ret.append(factor)

else:

factor += 1

if n != 1:

ret.append(n)

return ret

 

def CountDivs(n: int) -> int:

factors = Factorize(n)

T = 1

for i in set(factors):

T*= factors.count(i) + 1

return T

d = {}

for i in range(120115, 120201):

d[i] = CountDivs(i)

maxKey, maxValue = 0, 0

for key, value in d.items():

if value > maxValue:

maxValue = value

if key > maxKey:

maxKey = key

print(maxValue, maxKey)


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

Раздел кодификатора ФИПИ: