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を削除mylistして のみを持つと6、正常に動作します。

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

私のコードに何か問題があるか、any間違って使用していますか? ここにいくつかのヒントをください

4

2 に答える 2

5

あなたの機能に何か問題がありますisPrime()forループ内ではFalse、条件が True と評価された場合に現在返されていますが、これは が で割り切れない場合にn%iのみ発生します。代わりにorを使用する必要があります。niif not n%iif n%i == 0

于 2013-10-29T23:44:00.770 に答える
3

mod が 0 の場合にのみ i が n を除算するので、必要if n%i == 0ではありませんif n%i。i が n を除算しない場合、コードは false を返します。

于 2013-10-29T23:43:47.020 に答える