2017-01-15 3 views
0

私はちょうど5日間の練習をしています。私の質問が非常に低いレベルであれば、毎日1時間ほど親切に寛容です。事前コーディングEXPPython:プライムとインクリメントを確認する

入力した番号がある場合は、以下のコードの私の目的は の1-チェックですプライム 2 - 次の最大の素数

def primetest (num):  # check if number is a prime 
    for c in range (2, num): 
    if num % c == 0: 
     repeattest (num)  #not prime? increment number 
    else : 
     print (num,"is a prime number") 
     break  

def repeattest (num):  # check prime if not increment number by 1  
for z in range (2, num): 
    num = num+1 
    primetest (num) 
    if num % z == 0: 
     num = num+1 
    else: 
     print ("Next Prime:", num+1) 
     break 

num = int (input ("enter a number:"))  # main code: 
for y in range (2, num): 
    if num % y == 0: 
     repeattest (num) 
    else: 
     print (num,"is a prime number") 
     break 

私は、ロジックは罰金だと思うが印刷されない場合はなぜ出力が得られないのか分かりません。助けてください

+0

あなたは、出力のサンプルを提供することができますか? – Chuck

+0

私には確かではありませんが、そう多くの間違ったことが起こっています。 – Shashank

+0

'の範囲(2、num)の' for c: ':too long。 'sqrt(num)+ 1'までテストしてください –

答えて

0

あなたがやったやり方は、効率の悪い多くのエラーがあります。あなたのコードを少し修正することで、ずっと簡単にできました。理解して、コメントを読む:

def primetest (num):  # check if number is a prime 
    return(all(num % i for i in range(2, num))) 

num = int (input ("enter a number:"))  # main code: 

while True: #loop continues until prime number found(True) 
    if primetest(num): 
     print(num,"is a prime number.") 
     break #(stops loop if prime found) 
    else: #otherwise repeat by incrementing to the next num until found 
     print(num,"is not a prime number.") 
     num += 1 

出力:

enter a number:45 
45 is not a prime number. 
46 is not a prime number. 
47 is a prime number. 
+0

ありがとう、私はまだ初心者です。私はあなたがここで何をしたのか理解しています:戻り値(すべて(2%)) - - 45を2、3、4、5、... 44で割ります。すべてを返します...それは何の価値を返しますか? –

+0

真または偽のブール値を返します。素数の場合はTrue、素数でない場合はFalse。したがって、この値はif文で使用されます。 if primetest(num)。 – Inconnu

関連する問題