使用 Python 通过小于其平方根的素数 % 来识别一个数字是否是素数



我想使用以下代码确定一个数字是否是质数:

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' object is not iterable"。

我不知道我做错了什么。请问有人可以帮我吗?

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是按升序排列的。

for d in (primes and d<m_d):

语句"d

最新更新