3

ユーザーが直角三角形の可能な最大の斜辺を入力できるようにするプログラムを作成しました。私のプログラムは、三角形の可能なすべての辺のリストをリストします。問題は、10000 などの値を入力すると、プログラムの実行に時間がかかることです。プログラムの効率を改善する方法について何か提案はありますか?

コード:

largest=0
sets=0
hypotenuse=int(input("Please enter the length of the longest side of the triangle"))
for x in range(3,hypotenuse):
    for y in range(4, hypotenuse):
        for z in range(5,hypotenuse):
            if(x<y<z):                   
                 if(x**2+y**2==z**2):
                     commonFactor=False
                     for w in range(2,x//2):
                         if (x%w==0 and y%w==0 and z%w==0):
                             commonFactor=True
                             break
                     if not(commonFactor):
                         print(x,y,z)
                         if(z>largest):
                             largest=z
                         sets+=1
print("Number of sets: %d"%sets)
print("Largest hypotenuse is %d"%largest)

ありがとう!

4

3 に答える 3

0

非常に簡単な最適化の 1 つは、任意に決定することx <= yです。たとえば、(10,15,x)が解ではない場合、 も解では(15,10,x)ありません。2x**2 > hypoteneuse**2これは、解決策がないため、アルゴリズムを終了できることも意味します。

于 2013-08-14T15:50:34.460 に答える