2017-09-28 11 views
1

isPrime関数をそれ自身で実行しようとすると、nを任意の整数に置き換えます。素数であるかどうか。しかし、abprimesから得ることが、それらが素数であるかどうかを調べるための数字の範囲として使用することが、問題のあるところです。引数としてaとbをローカル関数 "isPrimes"に渡して、範囲として使用しようとしています

def primes(a,b): 
    pass 

def isPrime(n): 
    # I want to make n take the values of a and b so that the is Prime 
    # function executes all the prime numbers within the range a to b 
    if n == 1: 
     return False 
    # here I've tried referencing n and (a,b) as the range but neither 
    # option does anything 
    for z in range(a, b): 
     if n % z == 0: 
      return False 
    else: 
     # this is supposed to print the n each time it comes up as a prime 
     # number but when I run this nothing happens and I'm not sure where 
     # I'm going wrong 
     print(n) 
     return True 

答えて

0
  1. はあなたのリターンとprint文の順序を切り替えます。あなたのプログラムは です。あなたのprint文が実行される前に終了します
  2. がプライムであるかどうかテストする範囲を指定したい場合は、 関数でaとbを宣言するか、それはパラメータとしてです。
  3. aからbまでの各整数に対して、n%z = 0のときはfalseを返します。これは、素数で%演算子を使用しようとしたときに発生します(例17 %17はfalseを返します)。 n!= zなら比較する文を追加してください。
  4. if文でfalseを返し、else文でtrueを返します。これは、関数が終了する前に、コードが1つの比較のみを行うことを意味します。あなたのプログラムの終わりにreturn true文を追加してください。

は以下を参照:

def isPrime(n): 
    a = 2 
    b = 100000 

    if n == 1: 
     print("1 is not a prime number.") 
     return False 

    for z in range(a,b): 
     if n%z==0 and n != z: 
      print(str(n) + " is not a prime number.") 
      return False 

    print(str(n) + " is a prime number.") 
    return True 
関連する問題