欧拉计划 39

来源:互联网 发布:什么是世界货币 知乎 编辑:程序博客网 时间:2024/06/06 07:02

如果p是一个直角三角形的周长,三角形的三边长{a,b,c}都是整数。对于p = 120一共有三组解:

{20,48,52}, {24,45,51}, {30,40,50}

对于1000以下的p中,哪一个能够产生最多的解?

import time# p推a,b,ct0 = time.time()n = 1000p_num_max = 0p_max = 1for p in range(6, n):    p_num = 0    for c in range((p + 3) // 3, p // 2 + 1):        # a < b < c        for b in range((p - c) // 2 + 1, c):            a = p - c - b            if a ** 2 + b ** 2 == c ** 2:                p_num += 1    if p_num > p_num_max:        p_max = p        p_num_max = p_numprint(p_max)t1 = time.time()print(t1 - t0)# a,b,c推pt0 = time.time()n = 1000p_dict = dict()# 999 >= a + b + c >= a + a + 1 + a + 2for a in range(1, (n - 4) // 3 + 1):    # 999 >= a + b + c >= a + b + b + 1    for b in range(a + 1, (n - 2 - a) // 1 + 1):        c = pow(a ** 2 + b ** 2, 0.5)        if a + b + c >= n:            break        if c == int(c):            p_dict.setdefault(a + b + c, 0)            p_dict[a + b + c] += 1        if 2 * b + 1 > a ** 2:            breakprint(max(p_dict.items(), key=lambda x:x[1]))t1 = time.time()print(t1 - t0)
0 0
原创粉丝点击