blackssheep
2021-05-21 11:26
采纳率: 50%
浏览 61

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

题目描述. 输入一个偶数N(N <= 10000),验证4-N所有偶数是否符合哥德巴赫猜想:任-大于2的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如10, 10=3+7=5+5,则10=5+5是错误答案。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • CSDN专家-张老师 2021-05-21 11:35
    已采纳
    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()
    1 打赏 评论
  • 源程序如下:

    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
    1 打赏 评论
  • CSDN专家-张老师 2021-05-21 11:46
    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()
    1 打赏 评论
  • benbenli 2021-05-21 11:44
    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
    
    打赏 评论
  • 有问必答小助手 2021-05-21 14:09

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    打赏 评论

相关推荐 更多相似问题