首页 > 解决方案 > 如何找到前 m 个孪生素数?

问题描述

我的程序应该找到前 m 个孪生素数并打印它们。

def isItPrime(n):
    tests = primes.copy()
    while len(tests) != 0:
    if n % tests[-1] == 0:
     return False
elif n % tests[-1] != 0:
    tests.pop()
  if len(tests) == 0:
    primes.append(n)
    return True
def findTwinPrimes(a , b): 
  if isItPrime(a) == True:
    if isItPrime(b) == True:
      if b - a == 2:
        print(a, "-", b, "is a twin prime")
def firstMTwinPrimes(m):
  o = 0
  i = 1
  if o < m :
   print(i)
   k = 3
   l = 5
   findTwinPrimes(k,l)
   k += 1
   l += 1
   o += 1
firstMTwinPrimes(7)

目前,它运行没有错误,但也不起作用。i 是检查程序运行了多少次,它只运行一次。我不知道为什么因为如果 o 小于 m 它应该再次运行。同样对于 3 和 5,它们是孪生素数,但对它们不起作用。isItPrime 已经被实现来检查一个数字是否是素数。它返回答案。

标签: pythonpython-3.xprimes

解决方案


请发布带有功能和错误的代码

否则,试试这个:

def printTwinPrime(n): 

    prime = [True for i in range(n + 2)] 
    p = 2

    while (p * p <= n + 1): 

        # If prime[p] is not changed,  
        # then it is a prime 
        if (prime[p] == True): 

            # Update all multiples of p 
            for i in range(p * 2, n + 2, p): 
                prime[i] = False
        p += 1

    # check twin prime numbers 
    # display the twin prime numbers 
    for p in range(2, n-1): 
        if prime[p] and prime[p + 2]: 
            print("(",p,",", (p + 2), ")" ,end='') 


# driver program 
if __name__=='__main__': 

    # static input 
    n = 7

    # Calling the function 
    printTwinPrime(n) 

推荐阅读