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

У меня проблема с моим кодом, потому что мой учитель просит меня проверить простые числа, но он не позволяет мне использовать функцию If-Else. Вот мой код:

def is_prime(n):
    i = 2
    while (i % n != 0):
        while (n % i == 0) and ( n != i):
            print("False")
            break
        i += 1
    while (i == n):
        print("True")
        break
number = int(input("Please enter a certain number: "))

print(is_prime(number))

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

Please enter a certain number: 10

False False True None

Как бы я решил эту проблему? Мне нужен только один ответ: правда или ложь. Спасибо за вашу помощь!!!


person pnmtu13894    schedule 12.11.2015    source источник


Ответы (1)


Короче говоря: пусть ваша функция возвращает значение, а не печатает его.

def is_prime(n):
    i = 2
    while (i % n != 0):
        while (n % i == 0) and ( n != i):
            return False
        i += 1
    return True
number = int(input("Please enter a certain number: "))

print(is_prime(number))

Объяснение:

Как только вы обнаружите, что n не является простым числом (строка while (n % i == 0) and ( n != i):), вы вернете False. На данный момент функция оставлена, поэтому break вам не нужен. Если n не делится ни на одно i, вы возвращаете True. True или False теперь являются результатом функции, и вы можете распечатать их или присвоить переменной и использовать в другом месте. Например.

x = is_prime(12) // x is False now
person Psytho    schedule 12.11.2015