马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
那位老哥看看哪里有错误,测试不完全通过,还超时,希望大佬能优化一下
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。 输入格式:输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。 输出格式:在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。 输入样例:24
输出样例:24 = 5 + 19- #判断素数函数
- def prime(p):
- flag = 0
- if p == 2:
- return True
- else:
- for i in range(2,p):
- if p%i==0:
- flag = 0
- break
- else:
- flag = 1
-
- if flag:
- return True
- else:
- return False
- a = int(input())
- d=[]
- for i in range(1,a+1):
- if prime(i):
- d.append(i)
- sum1 = 0
- flag = 0
- length = len(d)
- for i in d:
- for j in range(i,length):
- if i+d[j]==a:
- print("{} = {} + {}".format(a,i,d[j]))
- flag = 1
- break
- if flag==1:
- break
复制代码
|