Запрашивая простое число - PullRequest
0 голосов
/ 06 апреля 2020

Я попытался увидеть, что такое простое число в числе 2 ~ 12, и я написал несколько кодов. Но после «3» он печатает «Не простое число», даже если там «11». В чем проблема?

a=True
for n in range(2,13):
    for i in range(2,n):
        if n % i ==0:
            a=False
        if a == False:
        print(n, ": Not prime.")
    else:
        print(n,": Prime")

1 Ответ

1 голос
/ 06 апреля 2020

Вам нужно сбросить a на True для каждого значения сейчас. Также a == False это просто not a (как if a==True это if a)

for n in range(2,13):
    a = True
    for i in range(2,n):
        if n % i ==0:
            a = False
    if not a:
        print(n, ": Not prime.")
    else:
        print(n,": Prime")

Некоторые советы по поводу остановки l oop

  • на в квадрате root числа
  • используйте break, чтобы прекратить зацикливание, зная, что оно ложное
  • используйте for/else, если разрыв не найден, он переходит в else
for n in range(2,13):
    for i in range(2,int(n**0.5)+1):
        if n % i ==0:
            print(n, ": Not prime.")
            break
    else:
        print(n,": Prime")

2 : Prime
3 : Prime
4 : Not prime.
5 : Prime
6 : Not prime.
7 : Prime
8 : Not prime.
9 : Not prime.
10 : Not prime.
11 : Prime
12 : Not prime.
...