Форум сайта python.su
еще немножечко
def isPrm(x):
if x < 2 or (x > 2 and x % 2 == 0): # работает и без скобок, скобки для наглядности
return False
for i in xrange(3, int(x**0.5) + 1, 2):
if x % i == 0:
return False
return True
Отредактировано (Янв. 11, 2012 04:03:48)
Офлайн
вместо
baaпишем
x % 2 == 0
Офлайн
Здравствуйте, подскажите пожалуйста, как проверить число целое или нет?
Я делал так -
if type(x)==int:
…
А если x = math.sqrt(4), то
type(x) - float
Зарание спасибо!
Офлайн
py.user.nextэта проверка на чётность имеет один недостатокif x > 3 and x % 2 == 0 or x <= 1:
return False
def isprime(x):
if x > 3:
if x % 2 == 0:
return False
for i in range(3, int(x ** 0.5) + 1, 2):
if x % i == 0:
return False
elif x <= 1:
return False
return True
print(isprime(121))
Isemа потом ещё равно убрать и сидеть загадки разгадывать потом через полгода
пишем
x&1==0
Офлайн
def isPrm(x):
if x % 2 and x > 2:
for i in xrange(3, int(x**0.5) + 1, 2):
if x % i == 0:
return False
elif x != 2:
return False
return True
print isPrm(21)
Отредактировано (Янв. 30, 2012 02:36:20)
Офлайн
py.user.nextДа, сложно заниматься программированием не зная элементарную двоичную логику.
Isem написал:
пишем
x&1==0
а потом ещё равно убрать и сидеть загадки разгадывать потом через полгода
эта запись затемняет код, а ускорение ещё надо доказать
Офлайн
Isemесли код заставляет думать, то он плохо написан
Да, сложно заниматься программированием не зная элементарную двоичную логику.
Офлайн
py.user.nextили есть пробелы в образовании
если код заставляет думать, то он плохо написан
Офлайн
Диапазон можно уменьшить: вместо
xrange(3, int(x**0.5) + 1, 2)
xrange(3, int(math.sqrt(x)), 2)
Офлайн
agalen, зачем операцию возведения в степень заменять на вызов функции ?
Офлайн