Массив простых чисел

Нужно сделать алгоритм добавления в массив простых чисел от 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

→ Ссылка