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

Пусть M  — сумма ми­ни­маль­но­го и мак­си­маль­но­го на­ту­раль­ных де­ли­те­лей це­ло­го числа, не счи­тая еди­ни­цы и са­мо­го числа. Если таких де­ли­те­лей у числа нет, то счи­та­ем зна­че­ние M рав­ным нулю.

На­пи­ши­те про­грам­му, ко­то­рая пе­ре­би­ра­ет целые числа, бо́льшие 800 000, в по­ряд­ке воз­рас­та­ния и ищет среди них такие, для ко­то­рых M окан­чи­ва­ет­ся на 4. В от­ве­те за­пи­ши­те в пер­вом столб­це таб­ли­цы пер­вые пять най­ден­ных чисел в по­ряд­ке воз­рас­та­ния, а во вто­ром столб­це  — со­от­вет­ству­ю­щие им зна­че­ния M.

На­при­мер, для числа 20 М  =  2 + 10  =  12.

Ко­ли­че­ство строк в таб­ли­це для от­ве­та из­бы­точ­но.

Ответ:

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

Ре­ше­ние.

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

def deliteli(n):

deliteli = []

for i in range(2, int(n**0.5)+1):

if n % i == 0:

deliteli.append(i)

deliteli.append(n//i)

return deliteli

 

count = 0

for j in range(800_000, 10**6):

d = deliteli(j)

if len(d) != 0:

M = max(d) + min(d)

if M % 10 == 4:

print(j, M)

count += 1

if count == 5:

break

 

Ответ:

800004 400004

800009 114294

800013 266674

800024 400014

800033 61554

 

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

def get_M(n):

mi = ma = None

for i in range(2, int(n**0.5) + 1):

if n % i == 0:

if mi is None: mi = i

if ma is None or (n // i) > ma: ma = n // i

return 0 if mi is None else mi + ma

results = []

for n in range(800_001, 1_000_000):

M = get_M(n)

if M % 10 == 4:

results.append((n, M))

if len(results) == 5: break

for num, M in results:

print(f"{num}\t{M}")


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

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ−2025 по ин­фор­ма­ти­ке