首页 > 解决方案 > 求三角形的代码,其中两条边的平方根等于第三条边的平方根

问题描述

我写了一个 python 文件来查找存在一个三角形,使得两条边的平方根之和等于另一边的平方根,这在绿野仙踪等中被“稻草人”引用。

但它没有按预期工作。这可能是因为它效率不高。请为此提出解决方案。

如果需要,请编辑标题和正文

import random

num = 1000
a = random.randint(1, num)
b = random.randint(1, num)
c = random.randint(1, num)
x = a + b
y = b + c
z = a + c
k = 0.5
ak = a ** k
bk = b ** k
ck = c ** k
w = 1
while w==1:
        if x>c and y>a and z>b :
                print ("found and verfying")
                if ak+bk == ck:
                        print(a,b,c)
                        w = 2
                else:
                        a = random.randint(1, num)
                        b = random.randint(1, num)
                        c = random.randint(1, num)
                        print(a,b,c," is not a match" )

标签: pythonpython-3.x

解决方案


我想你想做这个。我更改了if语句,删除 k 并写入 0.5 以对其进行平方根,如果总和之一小于它停止的三角形边,则添加else 。

import random

num = 1000
a = random.randint(1, num)
b = random.randint(1, num)
c = random.randint(1, num)
x = a + b
y = b + c
z = a + c
ak = a ** 0.5
bk = b ** 0.5
ck = c ** 0.5
w = 1
while w == 1:
    if x > c and y > a and z > b:
        print("found and verfying")
        if ak + bk == ck or ak + ck == bk or bk + ck == ak:
            print(a, b, c, "is verified")
            w = 2
        else:
            a = random.randint(1, num)
            b = random.randint(1, num)
            c = random.randint(1, num)
            print(a, b, c, "is not a match")
    else:
        print("I can't find it")
        w = 2

如果你想继续如果其中一个总和小于边,你可以使用这个:

else:
    print("I can't find it. I am trying new one")
    a = random.randint(1, num)
    b = random.randint(1, num)
    c = random.randint(1, num)

推荐阅读