Массив простых чисел
Нужно сделать алгоритм добавления в массив простых чисел от 3 до 97. Проверка на простоту числа работает, но после добавления первого, он завершает программу. Подскажите пожалуйста в чём проблема.
n = []
x = 2
k = 1
for i in range(101):
x = x + 1
for g in range(2, x+1):
if x % g == 0:
k = k + 1
if k == 2:
n.append(x)
print(n)
Ответы (1 шт):
Автор решения: Pak Uula
→ Ссылка
Эмм, а почему бы вам не вынести проверку на простоту в отдельную функцию is_prime?
Тогда код заполнения массива получится вообще в одну строку:
n = [x for x in range(2,101) if is_prime(x)]
Самая бесхитростная функция проверки на простоту - метод грубой силы:
def is_prime(x:int)->bool:
# отрицательные, 0 и 1 не считаем простыми
if x < 2:
return False
# среди чётных простое только 2
if x%2 == 0:
return x==2
# перебираем делители до квадратного корня из x
lim = math.isqrt(x)+1
# перебираем только нечётные
for p in range(3,lim,2):
if x % p == 0:
return False
return True
Код целиком: https://onecompiler.com/python/425j42bft