4

私はこのコードを機能させて、2から49までの素数として入力数値を返すように努めてきましたが、そうでない場合でも、ほとんどの数値を素数として返すだけです...演習では、その3、5、7はとにかく素数だったので、そのビットを無視してください...

def prime(a):
if a < 2: return False
if a % 2 == 0: return False
if a == 3 or a == 5 or a == 7: return True
for n in range(3,int(a ** 0.5) + 1): 
    if a % n == 0: return False
    if a % n != 0: return True

a = input("Enter a number between 1 and 49: ")

if prime(a) is False:
    print a, " is not a prime number"

if prime(a) is True:
    print a, " is a prime number"
4

1 に答える 1

5
for n in range(3,int(a ** 0.5) + 1): 
    if a % n == 0: return False
    if a % n != 0: return True  # This if condition is not needed

2番目のif条件は必要ありません。それ以外の場合は、数値が現在の値で割り切れない場合はすぐに戻りますn。しかし、あなたはそれを望んでいません。n電流が数値を除算できない場合は、次の値を確認する必要があります。

したがって、ifを削除しreturn True、ループの終了後にaを追加します。

したがって、メソッドは次のようになります。-prime()

def prime(a):
    if a < 2: return False
    if a % 2 == 0: return False
    if a == 3 or a == 5 or a == 7: return True
    for n in range(3,int(a ** 0.5) + 1): 
        if a % n == 0: return False

    return True
于 2012-10-17T22:14:26.360 に答える