Python:一个函数,用于查找素数,但也确定输入的参数是否是2个素数的总和
如果能给我一些反馈,我将不胜感激。在一次访谈中,挑战在于编写一个只接受一个数字f(n)的函数,如果输入的数字满足以下条件,则返回True:Python:一个函数,用于查找素数,但也确定输入的参数是否是2个素数的总和,python,algorithm,recursion,Python,Algorithm,Recursion,如果能给我一些反馈,我将不胜感激。在一次访谈中,挑战在于编写一个只接受一个数字f(n)的函数,如果输入的数字满足以下条件,则返回True: 质数(很容易检查) 两个素数之和 如果不能输入第二个数字,算法中会有很多递归。有什么建议吗 真的一个例子是f(5),其中5是素数,2和3的和(也是素数)。但是1+4也是5,这是错误的。检查数字是否为素数(你声称这很容易),然后检查小于该数字的两个是否为素数 只有一个偶数素数(2)。由于两个奇数之和总是偶数,因此任何其他两个素数(2除外)的和总是偶数,因此不是
真的一个例子是f(5),其中5是素数,2和3的和(也是素数)。但是1+4也是5,这是错误的。检查数字是否为素数(你声称这很容易),然后检查小于该数字的两个是否为素数
只有一个偶数素数(2)。由于两个奇数之和总是偶数,因此任何其他两个素数(2除外)的和总是偶数,因此不是素数。这意味着如果一个数字n是素数,并且也是两个素数的和,那么n-2必须是素数。您可以从使用itertool方法的代码中获得提示和帮助:
import itertools
user_input=int(input())
def primecheck(int_1): #prime no check function
check_list = []
for item in range(1,int_1):
if int_1%item==0:
check_list.append(item)
if len(check_list)==1:
return 0
else:
return 1
if primecheck(user_input)==0: #if prime no is sum of two other prime no check function
def checker(int_2):
all = []
for item in range(2, user_input):
all.append(item)
only_prime = []
for item_1 in all:
if primecheck(item_1) == 0:
only_prime.append(item_1)
for check in itertools.product(only_prime, repeat=2):
sum_of_two_prime = check[0] + check[1]
if sum_of_two_prime == user_input:
return "{} is prime number and it is sum of {} and {}".format(user_input,check[0],check[1])
return "it is prime but not sum of any two other prime numbers"
print(checker(user_input))
else:
print("Its not prime , Please Enter a prime number")
测试案例1:
17
it is prime but not sum of any two other prime numbers
5
5 is prime number and it is sum of 2 and 3
13
13 is prime number and it is sum of 2 and 11
虽然这看起来确实是一个有趣的问题,但这个问题很可能已经解决了。我建议添加到目前为止您已经尝试过的代码,并准确地说明您遇到的问题。否则,这将看起来像一个经典的“gemme teh codez”请求。找到给定数字之间的所有素数,看看是否有一个和组成你的数字。条件是
或或和?Christian说的-这是一个有趣的问题,但是一个“糟糕”的问题,因为你还没有显示任何工作。1+4有什么关系?这两个都不是最好的。另外,请注意,一个素数可以是两个素数之和的唯一方法是如果它是两个素数中较大的一个(另一个素数+2)。关于算法?j15,谢谢你的指导。在coderpad会话中遇到问题时,我没有注意到。