Python不用函数解决哥德巴赫猜想

题目描述. 输入一个偶数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