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

Пусть R  — сумма мак­си­маль­но­го и ми­ни­маль­но­го про­стых де­ли­те­лей це­ло­го числа, не счи­тая еди­ни­цы и са­мо­го числа. Если у числа нет про­стых де­ли­те­лей, то счи­та­ем зна­че­ние R рав­ным нулю. На­пи­ши­те про­грам­му, ко­то­рая пе­ре­би­ра­ет целые числа, боль­шие 6 000 000, в по­ряд­ке воз­рас­та­ния и ищет среди них пер­вые шесть таких чисел, для ко­то­рых R за­кан­чи­ва­ет­ся на 19.

 

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

Ответ:

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

Ре­ше­ние.

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

def prostoe(n):

k = 2

while k**2 <= n:

if n%k == 0: return False

k += 1

return True

 

def r(n):

d = set()

k = 2

while k**2 <= n:

if n%k == 0: d |= {k,n//k}

k += 1

p = [x for x in d if prostoe(x)]

return 0 if len(p) == 0 else min(p) + max(p)

k = 0

n = 6000001

while k < 6:

if r(n)%100 == 19:

print(n)

k += 1

n += 1

 

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

6000002

6000034

6000176

6000190

6000272

6000276

 

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

def F(n):

k=1

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

if n%j==0:

k=0

break

return k

cnt=1

for n in range (6000000+1,10**15):

a=[]

k=int(n**0.5)+1

for j in range (2,k):

if n%j==0:

if F(j)==1:

a.append(j)

if n//j!=j and F(n//j):

a.append(n//j)

if len(a)>=2:

if (min(a)+max(a)%100)==19:

print(n)

cnt+=1

if cnt>6:

break

 

При­ведём ре­ше­ние Сер­гея Донец на языке PascalABC.NET.

uses School;

begin

Range(6_000_001, 8_000_000)

.Where(n-> begin

if IsPrime(n) then Result := false

else begin

var pd := PrimeDivisors(n);

var M := pd.Min + pd.Max;

Result := M mod 100 = 19;

end;end).Take(6).PrintLines;

end.


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

Источник: ЕГЭ по ин­фор­ма­ти­ке 11.06.2025. Ос­нов­ная волна. Даль­ний Во­сток