1000 python下的双素数

2024-10-01 07:41:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我在打印双生子时遇到问题。在

当我第一次编写代码时,我得到的第一个数是素数,而不是第二个数。在

所以我在printTwinPrimeNumbers(twinPrime)函数中使用质数检查器。但是现在它说num2没有定义。在

我该怎么让它同时检查第一个和第二个号码呢。在

# determine if numbers are prime
def Prime(num1):
    divisor = 2
    while divisor <= num1 / 2:
        if num1 % divisor == 0:

            return False # number is not a prime
        divisor += 1

    return True # number is prime

def printTwinPrimeNumbers(twinPrime):
    NUMBER_OF_PRIMES = 50
    NUMBER_OF_PRIMES_PER_LINE = 1
    num1 = 3 # number to be tested starting point
    count = 0

    for i in range(0, 1001):

        if Prime(num1):
            def prime2(num2):

                num2 = num1 + 2

                count += 1


                while divisor <= num2 / 2:
                    if num2 % divisor == 0:

                        return False # number is not a prime

                    divisor += 1

                return True # number is prime


        if prime2(num2):
            print("(", num1, ",", num2, ")", end = '')


            # makes sure only one is printed per line
            if count % NUMBER_OF_PRIMES_PER_LINE == 0:
                # Print the number and advance to the new line
                print()



        num1 += 1

def main():
    print("The Twin Prime Numbers are: ")
    printTwinPrimeNumbers(50)

main()# calls main function 

Tags: ofnumberreturnifisdefcountprime
2条回答

变量num2是未定义的,因为它只在prime2中定义,但您将其用作prime2的参数。而且,prime2根本不需要,因为它与Prime相同,但有不同的参数。只需将Prime用于num1和{}。在

for i in range(0, 1001):
    num1 = i
    num2 = i + 2
    if Prime(num1) and Prime(num2):
        print("(", num1, ",", num2, ")")

而且,这是相当浪费的,因为你要测试每个数的素性两次。相反,只需创建一个包含该范围内所有质数的列表,并检查每个质数的“孪生”是否也在该列表中。在

^{pr2}$
# determine if numbers are prime
def Prime(num1):
    divisor = 2
    while divisor <= num1 / 2:
        if num1 % divisor == 0:

            return False # number is not a prime
        divisor += 1

    return True # number is prime

def printTwinPrimeNumbers(twinPrime):
    NUMBER_OF_PRIMES = 50
    NUMBER_OF_PRIMES_PER_LINE = 1
    num1 = 3 # number to be tested starting point
    count = 0

    for i in range(0, 1001):

        if Prime(num1):
            num2 = num1 + 2



            def prime2(num2):

                count += 1


                while divisor <= num2 / 2:
                    if num2 % divisor == 0:

                        return False # number is not a prime

                    divisor += 1

                return True # number is prime


        if prime2(num2):
            print("(", num1, ",", num2, ")", end = '')


            # makes sure only one is printed per line
            if count % NUMBER_OF_PRIMES_PER_LINE == 0:
                # Print the number and advance to the new line
                print()



        num1 += 1

def main():
    print("The Twin Prime Numbers are: ")
    printTwinPrimeNumbers(50)

main()# calls main function 

相关问题 更多 >