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

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

Ответ:

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

Ре­ше­ние.

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

def cislo2or3(i):

return (str(i).count('2')+str(i).count('3'))>0

 

count = 0

n = 5000001

while count < 5:

delitel = []

k = 2

t = n

while t > 1:

while t%k == 0:

delitel.append(k)

t //=k

k+=1

if len(delitel) == 3:

if cislo2or3(delitel[0]) and cislo2or3(delitel[1]) and cislo2or3(delitel[2]):

print(n)

count += 1

n += 1

 

 

Ответ: 5000012 5000036 5000042 5000043 5000082.

 

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

uses School;

begin

var n := 5_000_001;

var k := 0;

while k < 5 do begin

var fs := n.Factorize;

if (fs.Count = 3) and fs.All(f-> f.Digits.Any(d-> d in [2, 3]))

then begin k+=1;Println(n); end;

n += 1; end;

end.


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