работа с циклами python, что я сделал неправильно?

Дана последовательность целых положительных чисел. Определить количество простых чисел в последовательности.

N = [6, 4, 3, 20, 1, 30]
Pr = True

for i in range (0, len(N)):
    for s in range (2, N[i]):
        if N[i]%s == 0:
            Pr = False
            if Pr == True:
                print('Число', N[i], 'Простое')
            else:
                print('Число', N[i], 'Непростое')

Ответы (1 шт):

Автор решения: Dmitry

Код может выглядеть вот так:

N = [6, 4, 3, 20, 1, 30]

for i in range (0, len(N)):
    Pr = True
    for s in range (2, N[i]):
        if N[i]%s == 0:
            Pr = False
    if Pr:
        print('Число', N[i], 'Простое')
    else:
        print('Число', N[i], 'Непростое')

В вашем коде основная ошибка: после того как переменная Pr получает значение False, больше никогда не изменится.

Результат работы кода:

Число 6 Непростое
Число 4 Непростое
Число 3 Простое
Число 20 Непростое
Число 1 Простое
Число 30 Непростое

И с той же логикой можно записать короче. Поскольку ifы простые их можно записать в одну строку:

N = [6, 4, 3, 20, 1, 30]

for i in range (0, len(N)):
    Pr = True
    for s in range (2, N[i]):
        if N[i]%s == 0: Pr = False 
    res = 'простое' if Pr else 'не простое'
    print(f"Число {N[i]} {res}")
→ Ссылка