题目描述. 输入一个偶数N(N <= 10000),验证4-N所有偶数是否符合哥德巴赫猜想:任-大于2的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如10, 10=3+7=5+5,则10=5+5是错误答案。
def isprime(x):
if x==2: return True
if x%2==0: return False
n=3
while n*n<=x:
if x%n==0: return False
n+=2
return True
def gedb(x):
if x<4 or x%2!=0:
print("输入的数据不正确,应该是大于或等于4的偶数")
return
if x==4:
print('4=2+2')
return
for n in range(3,x,2):
if isprime(n) and isprime(x-n):
print(x,'=',n,'+',x-n)
return
def main():
x=int(input("输入大于或等于4的偶数"))
gedb(x)
main()
源程序如下:
def isPrime(n):
for i in range(2,n-1):
if n % i == 0:
return False
else:
return True
n = int(input("请输入一个大于4的偶数:"))
list1=[]
for i in range(2,n//2):
if (isPrime(i) and isPrime(n-i)):
list1.append("%d=%d+%d"%(n,i,n-i))
print("最小方案为:")
print(list1[0])
运行结果如下:
请输入一个大于4的偶数:10
最小方案为:
10=3+7
请输入一个大于4的偶数:60
最小方案为:
60=7+53
def isprime(x):
if x==2: return True
if x%2==0: return False
n=3
while n*n<=x:
if x%n==0: return False
n+=2
return True
def gedb(x):
if x<4 or x%2!=0:
print("输入的数据不正确,应该是大于或等于4的偶数")
return
if x==4:
print('4=2+2')
return
for n in range(3,x,2):
if isprime(n) and isprime(x-n):
print(x,'=',n,'+',x-n)
return
def main():
x=int(input("输入大于或等于4的偶数"))
gedb(x)
main()
import math
def isPrime(m):
upper = int(math.sqrt(m))
for i in range(2, upper + 1):
if m % i == 0:
return False;
return True
n = int(input("请输入一个偶数N(2<N<=10000):"))
if n <= 2 or n > 10000 or n % 2 != 0:
print("输入数不符合要求。")
else:
for i in range(2, (n + 1)//2):
if isPrime(i) and isPrime(n - i):
print(f"{n} = {i} + {n - i}")
break
# Output:
请输入一个偶数N(2<N<=10000):10
10 = 3 + 7
请输入一个偶数N(2<N<=10000):20
20 = 3 + 17
请输入一个偶数N(2<N<=10000):100
100 = 3 + 97
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632