Форум сайта python.su
0
Нужно написать программу, проверяющую является ли число простым. Вот код.
Почему 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
Офлайн
6
Потому что остаток от 9/2 != 0
Офлайн
568
for n in range(2, (x - 1)): if x % n == 0: return False else: return True
Офлайн
0
FishHookСпасибо, я понял, но что поправить в коде, чтобы этого не было?
Всё, финита
Офлайн
568
Очевидно, что не нужно делать возврат из ветки else.
Офлайн
857
Офлайн
8
def is_prime(n): return ~ -2**n % n < 2 print(is_prime(int(input())))
Офлайн
857
Vigidef is_prime(n): return ~ -2**n % n < 2
[1, 341, 561, 645, 1105, 1387, 1729, 1905, 2047, 2465, 2701, 2821, 3277, 4033, 4369, 4371, 4681, 5461, 6601, 7957, 8321, 8481, 8911]
Отредактировано py.user.next (Янв. 20, 2016 07:10:23)
Офлайн