EularProject 39:给周长推断构成直角三角形个数

Posted jhcelue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EularProject 39:给周长推断构成直角三角形个数相关的知识,希望对你有一定的参考价值。

华电北风吹
天津大学认知计算与应用重点实验室
完毕日期:2015/7/30

Integer right triangles
Problem 39
If p is the perimeter of a right angle triangle with integral length sides, {a,b,c}, there are exactly three solutions for p = 120.
{20,48,52}, {24,45,51}, {30,40,50}
For which value of p ≤ 1000, is the number of solutions maximised?
Answer:
840
Completed on Thu, 30 Jul 2015, 04:51
Go to the thread for problem 39 in the forum.
利用的性质
b+c=l?a
c?b=a2l?a
a<=b<c
a+b>c
当中第二个性质整除a能够大大降低运算时间

__author__ = ‘zhengyi‘

def IsRightTriangle(abc):
    a2=pow(abc[0],2)
    b2=pow(abc[1],2)
    c2=pow(abc[2],2)
    temp=a2+b2-c2
    if temp==0:
        return 1
    else:
        if temp<0:
            return 0
        else:
            return -1

def Count(perimeter):
    count=0
    for a in range(1,perimeter//3):
        if pow(a,2)%(perimeter-a)!=0 or pow(a,2)//(perimeter-a)>=a:
            continue
        for b in range(max(perimeter//2-a,a),perimeter//2):
            temp=IsRightTriangle([a,b,perimeter-a-b])
            if temp==-1:
                break
            else:
                count+=temp
    return count

count=0
p=0
for i in range(1,1001):
    temp=Count(i)
    if temp>count:
        p=i
        count=temp

print(p)

以上是关于EularProject 39:给周长推断构成直角三角形个数的主要内容,如果未能解决你的问题,请参考以下文章

python算三角形面积

华为笔试:直角三角形个数

直线与圆

EularProject 42:单词解码出来的三角形数

EularProject 36:2进制和10进制回文数

python编程 输入三角形的三条边,计算三角形的面积\