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

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

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

1 5

3 7

 

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

Ответ:

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

Ре­ше­ние.

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

 

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

var

count, numDel, i, j: longint;

begin

count := 0;

for i := 245690 to 245756 do begin

count := count + 1;

numDel := 2;

for j := 2 to round(sqrt(i)) do begin

if i mod j = 0 then begin

numDel := numDel + 1;

if numDel > 2 then break;

end;

end;

if numDel = 2 then writeln(count, ' ', i);

end;

end.

 

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

22 245711

30 245719

34 245723

52 245741

58 245747

64 245753

 

При­ведём ре­ше­ние Павла Шост­ка на языке Pascal.

uses School;

(245690..245756).numerate.where(\(a,b)->b.divisorscount=2).printlines(\(a,b)->a+' '+b)

 

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

def f(x):

k=2

deliteli=set()

while k*k<=x:

if x%k==0:

deliteli.add(k)

if x//k<x:

deliteli.add(x//k)

k=k+1

return sorted(deliteli)

start=245690

end=245757

n=0

for i in range(start,end+1):

n=n+1

if len(f(i))==0:

print(n,i)

 

При­ведём ре­ше­ние Глин­ско­го Ми­ха­и­ла на языке Python.

n=0

for x in range (245690,245756+1):

m=[]

n+=1

for i in range(2,x//2+1):

if x%i==0:

m.append(i)

if len(m)>0:

break

if len(m)==0:

print(n,x)

 

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

counter = 0

for i in range(245690, 245756 + 1):

counter += 1

ost = 0

for d in range(2, i):

if i % d == 0:

ost += 1

if ost == 0:

print(counter, i)

 

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

for index, i in enumerate(range(245690, 245756 + 1)):

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

if i % j == 0:

break

else:

print(index+1, i)

 

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

is_prime = lambda x: all(x%m != 0 for m in range(2, x)) if x%2!=0 else False

for n in range(245690, 245757):

if is_prime(n):

print(n-245690+1, n)


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

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