0

我有以下代码用于计算素数

def isPrime(n):
   if (n==2):
      return True
   elif n<=1 or n%2==0:
      return False
   else:
      for i in xrange(3,n/2, 2):
          if n%i:
            return False
   return True


mylist = [6,9]

mylist2= [3,5,7,11,12]

if not any(isPrime(x) for x in mylist):
       print "No primes in list"

if not all(isPrime(x) for x in mylist2):
       print "Not all are primes numbers"

当我运行这个程序时,我得到

python calculate_primes.py 
Not all are primes numbers

我没有得到No primes in list. 但是如果我删除元素并且只有9,它工作正常。mylist6

python calculate_primes.py 
No primes in list
Not all are primes numbers

我的代码有问题还是我使用any错误?请在这里提供一些提示

4

2 回答 2

5

你的isPrime()功能有问题。如果条件评估为 True,则在for当前返回的循环内,但这只会发生在不能整除的情况下。相反,您应该使用or 。Falsen%iniif not n%iif n%i == 0

于 2013-10-29T23:44:00.770 回答
3

你想要if n%i == 0,不是if n%i因为只有当 mod 为 0 时我才除 n。当我不除 n 时,你的代码返回 false。

于 2013-10-29T23:43:47.020 回答