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 秒内执行此操作。当然,您可以将打印语句更改为您需要的任何内容

尝试:

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 回答