使用python识别一个数字是否为质数%%的质数小于其平方根

时间:2018-10-07 07:04:24

标签: 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'对象不可迭代”。

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

2 个答案:

答案 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