Def bhl (x): if x == 1: вернуть False elif x == 2: вернуть True elif x% 2 == 0: вернуть False для b в диапазоне (3, int (x ** 0,5 +1)): если x% b == 0: вернуть False else: вернуть True

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

elif x % 2 == 0:
    return False
for b in range(3,int(x**0.5 +1)):
    if x % b == 0:
        return False
else:
    return True
-2
user3303081 12 Фев 2014 в 23:24
1
Если x без остатка делится на 2, верните false, а в следующей строке, если x без остатка на b, верните false;
 – 
Matt
12 Фев 2014 в 23:28

1 ответ

Лучший ответ

Он проверяет, является ли x простым

x % 2 == 0 проверяет, является ли x четным или, другими словами, у него нет остатка, когда вы делите его на 2

for b in range(3,int(x**0.5 +1)): if x % b == 0: return False

Это проверяет от 3 до x / 2 + 1, есть ли число, которое делит x без остатка. Предыдущие случаи проверяли 1 и 2, и нет смысла проверять, делит ли число больше x / 2 x без остатка, потому что его нет.

0
Skylark 12 Фев 2014 в 23:32