2017-12-04 7 views
-1
def prime(upper): 
    while upper >=2: 
     for num in range(2, upper + 1): 
      prime = True 
      for i in range(2, num): 
       if (num % i == 0): 
        prime = False 
      if prime: 
       print(num, end=",") 
       if num == upper: #I think there is a problem here 
        break 
prime(7) 

この関数が7に達すると、この関数を停止する方法 PS:whileループでこのコードを実行します。 ところであなたは、forループせずに、それをこのコードを作ることができるなら、私のためにそれを行ってください:) 私はあなたに感謝...whileループを使用したPython3.x Prime Numberリスト

+0

は、このリンクを参照して下さい:https://stackoverflow.com/questions/34664067/python-while-loop-for-finding-prime-numbers – Sam

+0

上部> = 2ながら '削除:'、それは不要です。 'の範囲内のnum(2、upper + 1):'は仕事をしています。 – Alperen

+0

また、 'if num == upper:break'部分は不要です。 – Alperen

答えて

0

EDIT:

私は私の以前のis_prime機能には問題があると思います。この方法では、迅速で、うまく機能:(Source

def is_prime(n): 
    """"pre-condition: n is a nonnegative integer 
    post-condition: return True if n is prime and False otherwise.""" 
    if n < 2: 
     return False; 
    if n % 2 == 0:    
     return n == 2 # return False 
    k = 3 
    while k*k <= n: 
     if n % k == 0: 
      return False 
     k += 2 
    return True 

あなたはこの機能を使用する必要があります。私はhereからis_prime機能を使用することになり

:編集する前に

。あなたは別の方法で使うことができます。

そして、私はあなたのためにこのコードを示唆している:

def is_prime(Number): 
    return 2 in [Number, 2**Number%Number] 

def prime(upper): 
    print([num for num in range(2, upper + 1) if is_prime(num)]) 

prime(7) 

出力:

[2, 3, 5, 7] 

をしかし、あなたは唯一のwhileループを使用して主張すれば、あなたのようにあなたのprime機能を変更することができます。

def prime(upper): 
    num = 2 
    while num <= upper: 
     if is_prime(num): 
      print(num, end = ",") 
     num += 1 

次に、出力は次のようになります。

2,3,5,7, 
+0

私はこの種の助けをすることができますが、このコードの目的は何かを尋ねることができます ** [Number、2 ** Number%Number]の2を返します** –

+0

これは単なるインターネット上の機能です。私はその論理を知らない。その答えに与えられたリンクには他の機能があります。 – Alperen

+0

リンクが見つからない場合は、[ここ](https://stackoverflow.com/questions/15285534/isprime-function-for-python-language/32882220#32882220)をクリックしてください。私は、この方法は少し問題がある、リンクには貧弱なコメントがあると思います。私はそれが短いので選んだ。別の 'is_prime'関数を使うことができます。 – Alperen

関連する問題