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

Обо­зна­чим через F целую часть сред­не­го ариф­ме­ти­че­ско­го всех на­ту­раль­ных де­ли­те­лей це­ло­го числа, кроме еди­ни­цы и са­мо­го числа. Если таких де­ли­те­лей у числа нет, то счи­та­ем зна­че­ние F рав­ным нулю.

На­пи­ши­те про­грам­му, ко­то­рая пе­ре­би­ра­ет целые числа, боль­шие 750 000, в по­ряд­ке воз­рас­та­ния и ищет среди них такие, для ко­то­рых зна­че­ние F при де­ле­нии на 7 даёт в остат­ке 6. Вы­ве­ди­те пер­вые 5 най­ден­ных чисел в по­ряд­ке воз­рас­та­ния и спра­ва от каж­до­го числа  — со­от­вет­ству­ю­щее зна­че­ние F.

Ответ:

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

Ре­ше­ние.

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

def Div(x):

s = set()

for y in range(2, int(x**0.5)+1):

if x%y == 0:

s |= {x//y, y}

return s if s else 0

k = 0

for x in range(750001, 10**10):

if k == 5: break

if (Pr:=Div(x)):

F = sum(Pr)//len(Pr)

if F%7==6:

print(x, F); k += 1

 

Ответ: 750002 35482; 750007 16316; 750021 125005; 750022 29392; 750024 31919.

 

При­ведём ре­ше­ние Бо­ри­са Са­ве­лье­ва на языке Python.

k = 1

for i in range(750000+1,10000000000000):

d = int(i**0.5)

a = []

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

if i%j == 0:

a.append(j)

if i//j != j:

a.append(i//j)

if len(a)>0:

f = int(sum(a)/len(a))

if f%7 == 6:

print(i,f)

k += 1

if k >= 6:

break

 

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

def F(n):

d = set()

k = 2

while k**2 <= n:

if n%k == 0:

d |= {k,n//k}

k += 1

return int(sum(d)/len(d)) if d else 0

k,n = 0,750000

while k < 5:

n += 1

Fn=F(n)

if Fn%7 == 6:

k += 1

print(n,Fn)

Источник: Проб­ный ЕГЭ Санкт-Пе­тер­бург, 20.02.2025. Ва­ри­ант 2