Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [2422000; 2422080], простые числа. Выведите все найденные простые числа в порядке возрастания, слева от каждого числа выведите его номер по порядку, считая, что первое найденное число имеет
Ответ:
Решим задачу перебором. Будем проверять в цикле количество делителей. Количество найденных простых чисел записываем
Приведём решение на языке PascalABC.
var n, count: longint;
function isPrime( n: integer ): boolean;
var d: longint;
begin
isPrime := True;
for d:=2 to round(sqrt(n)) do
if n mod d = 0 then begin
isPrime := False;
break;
end;
end;
begin
count := 0;
for n:=2422000 to 2422080 do begin
if isPrime(n) then begin
count := count + 1;
writeln( count, ' ', n )
end
end
end.
В результате работы программа должна вывести следующее:
1 2422027
2 2422033
3 2422037
4 2422073
Приведём решение Савича Александра (Москва) на языке Python.
a = 2422000
b = 2422080
m = 0
for i in range(a,b+1):
k = 0
for j in range(2,i//2+1):
if i%j==0:
k+=1
break
if k==0:
m += 1
print(m,i)
Приведём решение Вагнерова Ивана на языке Python.
def f(n):
return n > 1 and all(n%i !=0 for i in range(2,int(n**0.5)))
k = 0
for n in range(2422000,2422080):
if f(n):
k+=1
print(k,n)
Приведём решение Степанова Станислава на языке Python.
k = 0
for i in range(2422000, 2422080 + 1):
for j in range(2, int(i ** 0.5) + 1):
if not i % j:
break
else:
k += 1
print(k,i)
Приведём решение Артёма Гридина на языке Python.
print(*[f'{m[0]+1} {m[1]}\n' for m in enumerate([k for k in range(2422000, 2422081) if all(k%x != 0 for x in range(2, k//2+1))])], sep='', end='')
Примечание.
Фраза «слева от каждого числа выведите его номер по порядку» означает, что слева от числа должен быть выведен его номер в последовательности выводимых на экран чисел, то есть
Фраза «слева от каждого числа выведите его номер в последовательности» означает, что слева от числа должен быть указан его номер в последовательности исходных чисел.
Приведём решение Михаила Глинского на языке Python.
def d(x):
de=set()
for i in range(2,int(x**.5)+1):
if x%i==0:
de.add(i)
de.add(x//i)
de=sorted(de)
return de
for x in range(2422000,2422081):
if len (d(x))==0: print(x)
Приведём решение Юрия Красильникова на языке Python.
def prostoe(n):
k = 2
while k**2 <= n:
if n%k==0: return False
k += 1
return True
a = [n for n in range(2422000,2422080+1) if prostoe(n)]
for i in range(len(a)): print(i+1,a[i])

