吉林大学吧 关注:338,638贴子:8,969,997
  • 1回复贴,共1

下面是个验证100以内哥德巴赫猜想的程序,大家觉得最后的x

只看楼主收藏回复

下面是个验证100以内哥德巴赫猜想的程序,大家觉得最后的x = p + t中,判断t是否为素数的方法是用“if t in prime”好,还是用“if isPrime(t)”好呢?哪个效率会更好点?


IP属地:吉林来自Android客户端1楼2019-08-25 07:28回复
    #!/usr/bin/python3
    import math
    def isPrime(num):
    """功能:判断一个数是否为素数。"""
    if isinstance(num, int):
    if num <= 3: return num > 1
    end = int(math.sqrt(num) + 1)
    for x in range(2, end):
    if num % x == 0: return False
    return True
    return False
    def getPrimes(start, end):
    """功能:获取参数给定范围内的所有素数。"""
    return tuple((x for x in range(start, end) if isPrime(x)))
    # 程序功能:验证100以内哥德巴赫的猜想。
    # 哥德巴赫的猜想:任一大于2的偶数都可以写成两个素数之和。
    prime = getPrimes(2, 100)
    print(prime)
    for x in range(4, 101, 2):
    print("%3d"%x, end="")
    for p in prime:
    if p <= x/2:
    t = x - p
    if t in prime: # or if isPrime(t) #
    print(" =%3d+%3d" % (p, t), end = "")
    else: break
    print()


    IP属地:吉林来自Android客户端2楼2019-08-25 07:28
    回复