0

ある数が素数かそうでないかを教えてくれるプログラムを書こうとしています。ここにあります。関数を実行するとわかるように、chkPrimeすべてが true を返します。私は私の人生のためにそれを理解することはできません。何か案は?

total=0

#Check if number is whole
def chkWhole(x):

    if(x%1 == 0):

        return True

    else:

        return False




#Check to see if the number divides evenly with all primes
def chkModtwo(n):
    a=n%2
    if chkWhole(a)==True:
        return True
    else:
        return False
def chkModthree(n):
    a=n%3
    if chkWhole(a)==True:
        return True
    else:
        return False
def chkModfive(n):
    a=n%5
    if chkWhole(a)==True:
        return True
    else:
        return False
def chkModseven(n):
    a=n%7
    if chkWhole(a)==True:
        return True
    else:
        return False


#Check if the number is a prime using other two functions

def chkPrime(n):
    if n== 1 or 2 or 3 or 5 or 7:
        return True

    if chkModtwo(n)==False and chkModthree(n)==False and chkModfive(n)==False and chkModseven(n)==False:
        return True
    else:
        return False

#while True:
#yourinput=raw_input("Enter to check if it is a prime")
#
#
#    youranswer=chkPrime(yourinput)
#
#    if youranswer==True:
#        print("Yes, it is a prime")
#    else:
#        print("No, this number is not prime")
4

4 に答える 4

5
if n== 1 or 2 or 3 or 5 or 7:

する必要があります

if n == 1 or n == 2 or n == 3 or n == 5 or n == 7:

また

if n in (1, 2, 3, 5, 7):
于 2012-10-18T00:54:28.020 に答える
1

143 が素数か合成数かを判断しようとすると、関数はどのように応答しますか?

私のブログでこの関数を書いた方法は次のとおりです。

def isPrime(n):
    if n % 2 == 0:
        return n == 2
    d = 3
    while d * d <= n:
        if n % d == 0:
            return False
        d += 2
    return True
于 2012-10-18T02:49:57.037 に答える
1

最大の効率を求めていないと仮定すると、これは 10^14 までの数値に対して高速かつ簡潔になります。10**7 の範囲の各数値を反復処理するには、約 15 秒かかります。したがって、このサイズの数値の場合、約 10 ~ 15 秒でこの実行を実行できます。もちろん、printステートメントを必要なものに変更できます

試す:

import math
def isPrime(x):
     prime = True
     if x%2 == 0:
          Prime =False
     else:
          for i in range(2,math.sqrt(x)):
               if a == i:
                    pass
               else:
                    a%i == 0:
                    Prime = False
                    break
     return Prime

if isPrime(x):
    print('prime')
else:
    print('Not prime') 
于 2014-01-12T23:35:41.530 に答える
-2
def prime():
    a=int(raw_input("enter the no : "))
    if a == 1:
         print "the no is not prime"
    elif a == 2:
         print "the no is prime"
    else:
        for i in range(2,a):
            if a%i == 0:
            return "the no is not prime"
            else:
             return "the no is prime"

prime()
于 2014-07-30T11:51:57.510 に答える