Для loop_python - PullRequest
       4

Для loop_python

0 голосов
/ 11 сентября 2018

Я не знаю, почему такой простой синтаксис приводит к ошибке.Может ли кто-нибудь помочь мне узнать, пропустил ли я кого-нибудь?

Эта часть только пытается проверить, является ли конкретное (num) простым или нет.Не уверен, почему мой check_primes (10) приводит к 'PRIME'.Потому что я перебираю y из 3,4,5,6, ..., 9->, затем 10% 5 == 0, я полагаю, что это возвращает true, и 'Non PRIME' - результат.

Я делаю что-то не так в моей петле?

def check_primes(num):

for y in range(3,num):
        if num%y==0:
            return 'Non PRIME'
        else:
            return 'PRIME'

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Способ возврата 'PRIME' или 'Non PRIME', как в вашем примере:

def check_primes(num):
    is_prime = True
    for y in range(3,num):
        if num % y==0:
            return 'Non PRIME'
        else:
            continue
    return 'PRIME'

Вы вернете 'Non PRIME' в тот момент, когда сможете проверить, что число не простое. В качестве альтернативы, если вы преуспеете во всех ваших проверках, вы вернете «PRIME» по желанию.

(обратите внимание, что это не очень эффективный способ получения простых чисел)

(Обратите внимание, что приведенный ниже комментарий является правильным, этот метод работает точно так же с предложением else или без него)

0 голосов
/ 11 сентября 2018

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

0 голосов
/ 11 сентября 2018

Определение «простого» означает, что число является простым тогда и только тогда, когда оно делится только на 1 и на себя. Это означает, что число не простое, если вы найдете одно число от 2 до n-1, которое делит n. Чтобы проверить, что число является простым, вы должны проверить каждое число от 2 до n-1. Ваш код останавливается сразу после проверки делимости на 3 в обоих случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...