Проверьте, является ли число в диапазоне простым числом, если нет, верните все факторы - PullRequest
0 голосов
/ 12 апреля 2020

Допустим, мы хотим посмотреть на диапазон (2,10).

Я написал следующий код:

for n in range(2,10):
    for x in range(2,n):
        if n%x == 0:
            print(n,'equals',x,'*',n//x)  
            break
    else:
        print(n, "is a prime number") 

Вышеописанным способом можно выполнить проверку корректно, но он также возвращает один фактор.

Но если я заменю перерыв, чтобы продолжить:

for n in range(2,10):
    for x in range(2,n):
        if n%x == 0:
            print(n,'equals',x,'*',n//x)  
            continue
    else:
        print(n, "is a prime number") 

Он больше не сможет выполнить проверку правильно. Так есть ли лучший способ получить правильную проверку и все факторы? Ваш ответ очень поможет мне !!

1 Ответ

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

Не используйте параметр break или continue, но создайте и используйте переменную bool prime следующим образом.

for n in range(2,10):
    prime = True
    for x in range(2, n):
        if n%x == 0:
            print(n,'equals',x,'*',n//x)  
            prime = False
    if prime:
        print(n, "is a prime number")
...