Найти - Пользователи
Полная версия: Простое число
Начало » Python для новичков » Простое число
1
yyuuq
Нужно написать программу, проверяющую является ли число простым. Вот код.
Почему is_prime(9) выдает True?

def is_prime(x):
    if x < 2:
        return (False)
    elif x == 2 or x == 3:
        return True
    else:
        for n in range(2,(x -1)):
            if x % n == 0:
                return False
            else:
                return True
Firik
Потому что остаток от 9/2 != 0
FishHook
        for n in range(2, (x - 1)):
            if x % n == 0:
                return False
            else:
                return True
x = 9
первая итерация n = 2
9 % 2 - отлично от нуля, выполняется else, там происходит возврат из функции. Всё, финита.
yyuuq
FishHook
Всё, финита
Спасибо, я понял, но что поправить в коде, чтобы этого не было?
FishHook
Очевидно, что не нужно делать возврат из ветки else.
py.user.next
Древняя запись.
Vigi
def is_prime(n):
    return ~ -2**n % n < 2
print(is_prime(int(input())))
py.user.next
Vigi
def is_prime(n):
    return ~ -2**n % n < 2

От 1 до 10000 проверил.
[1, 341, 561, 645, 1105, 1387, 1729, 1905, 2047, 2465, 2701, 2821, 3277, 4033, 4369, 4371, 4681, 5461, 6601, 7957, 8321, 8481, 8911]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB