我想使用以下代码识别数字是否为质数:
import math
import time
primes=[]
def is_prime_v2(n):
if n==1:
return False
if n==2:
return True
if n>2 and n%2==0:
return False
m_d=math.floor(math.sqrt(n))
d=3
for d in (primes and d<m_d):
if n%d==0:
return False
return True
for n in range(1,101):
if is_prime_v2(n)==True:
primes.append(n)
print(primes)
终端返回以下错误:
“ TypeError:'bool'对象不可迭代”。
我不知道我在做什么错。有人可以帮我吗?
答案 0 :(得分:1)
由于primes
操作的短路性质,(primes and d<m_d)
为空时,and
的计算结果为空列表。如果不为空,则表达式的结果为d<m_d
的结果,它是一个布尔值。看来您打算过滤primes
,或者换句话说,如果不满足该条件,则中断循环:
for d in primes:
if d >= m_d:
break
if n % d == 0:
return False
这当然假设primes
处于升序。
答案 1 :(得分:0)
for d in (primes and d<m_d):
语句“ d