def main():
#code here
arr=[]
for i in range(2,100):
num=0
for j in range(2,i):
if i%j==0:
num+=1
if num==0:
arr.append(i)
N=int(input())
arr2=[]
for i in arr:
for j in arr:
if i+j==N:
arr2.append(i)
arr2.append(j)
print("{} {}".format(arr2[0],arr2[1]))
pass
if __name__ == '__main__':
main();
看你提供的信息后面修改之后是超时的错误是吗,修改如下看看:
N = int(input())
def main():
# code here
arr = []
for i in range(2, N):
for j in range(2, i):
if i % j == 0:
break
else:
arr.append(i)
arr2 = []
for i in arr:
for j in arr:
if i + j == N:
arr2.append(i)
arr2.append(j)
break
else:
continue
break
print("{} {}".format(arr2[0], arr2[1]))
if __name__ == '__main__':
main()
主要优化了循环次数,节省运行时间
循环耗时太多了,改成下面这样试试
N = int(input())
def is_prime(x):
for i in range(3, x, 2):
if x % i == 0:
return False
return True
def main():
# code here
for i in range(2, N):
data = N - i
if is_prime(i) and is_prime(data):
print("{} {}".format(i, data))
break
if __name__ == '__main__':
main()
不知道你这个问题是否已经解决, 如果还没有解决的话:一个模型三个特征
多阶段最优解模型:一个问题可以分解成多个阶段来实施,每个阶段都有多个决策组,最后在这些决策组的序列中找到最优解。