python-3.x - 打印各种组合中的第一个组合

标签 python-3.x loops

所以我有一个问题:

给定一个偶数(大于 2),返回两个总和等于给定数的素数。有几种可能的组合。只打印第一个这样的对

这是供额外引用:

*输入:第一行包含T,测试用例的数量。接下来的 T 行每行包含一个数字,我们将找到两个素数。

注意:该数字始终为偶数。

输出:对于每个测试用例,打印两个以空格分隔的素数,这样较小的数字首先出现。每个测试用例的答案必须换行。

约束条件:1≤T≤70

2 < N ≤ 10000

例子:

输入:

5, 74, 1024, 66, 8, 9990

输出:3 71、3 1021、5 61、3 5、17 9973

这是我尝试过的:

import math
def prime(n):

    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True       

T = int(input("No of inputs: ")) #T is the no of test cases

input_num = []
for i in range(0,T):
    input_num.append(input())

lst2= []
if T in range(1,71):
    for i in input_num:
        if (i in range(3,1000)) and (i % 2 == 0):
            for j in range(0,i):
                if prime(j) == True:
                    lst2.append(j)
                for x in lst2:
                    for y in lst2:
                        if x + y == j:
                            print(x,end = ' ')
                            print(y)

这仅接受输入但不返回输出。

此外,我的代码目前适用于所有组合,但我想要的只是第一对,我无法做到这一点

最佳答案

我找到了解决这个问题的更优雅的方法here .那里也有 Java、C、C++ 等版本的解决方案。我要给出python3的解决方案。

# Python 3 program to find a prime number 
# pair whose sum is equal to given number 
# Python 3 program to print super primes 
# less than or equal to n. 

# Generate all prime numbers less than n. 
def SieveOfEratosthenes(n, isPrime): 

    # Initialize all entries of boolean 
    # array as True. A value in isPrime[i] 
    # will finally be False if i is Not a 
    # prime, else True bool isPrime[n+1] 
    isPrime[0] = isPrime[1] = False
    for i in range(2, n+1): 
        isPrime[i] = True

    p = 2
    while(p*p <= n): 
        # If isPrime[p] is not changed, 
        # then it is a prime 
        if (isPrime[p] == True): 
            # Update all multiples of p 
            i = p*p 
            while(i <= n): 
                isPrime[i] = False
                i += p 
        p += 1

# Prints a prime pair with given sum 
def findPrimePair(n):
    # Generating primes using Sieve 
    isPrime = [0] * (n+1) 
    SieveOfEratosthenes(n, isPrime) 

    # Traversing all numbers to find  
    # first pair 
    for i in range(0, n): 
        if (isPrime[i] and isPrime[n - i]): 
            print(i,(n - i)) 
            return

# Driven program 
n = 74
findPrimePair(n)

关于python-3.x - 打印各种组合中的第一个组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61542498/

相关文章:

python - 在 Python 3 中返回迭代器时, `yield from` 应该优先于 `return` 吗?

PAN 卡上的 Python 正则表达式

python-3.x - 分区键作为 python azure 存储表中的变量

python - 计算前一行中大于当前行值的值

java 使用 case、while 和 if 语句循环

javascript - 表单元格循环错误地产生 undefined index

python-3.x - 清理后将 csv 数据从 URL 直接加载到 mysql 表

python - config.from_object 在使用 Python 3 的 Flask 中不起作用

无法在代码中添加循环

java - 如何使用方法解决: Locking account after three times?