-1
import sys

def pythTrue(a,b,c):
    (A,B,C) = (a*a,b*b,c*c)
    if A + B == C or B + C == A or A + C == B:
        return True

def smallestTrip(a,b,c):
    if pythTrue(a,b,c) == True:
        if (a+b+c)%12 == 0:
            return True
        else:
            return False

def tuplePyth(n):
    list_=[]
    for x in range(1, n):
        for y in range(1, n):
            for z in range (1, n):
                if x+y+z<=n:
                    if smallestTrip(x, y, z)==False:
                        list_.append([x,y,z])
    print (list_)

tuplePyth(int(sys.argv[1]))

ピタゴラスのトリプレットは、関係 a 2 + b 2 = c 2を満たす 3 つの正の整数 a、b、c のセットです。最小かつ最もよく知られているピタゴラス数は (a, b, c) = (3, 4, 5) です。コマンド ライン引数 n を読み取り、合計が n 未満 (つまり、a+b+c < n) で、(3, 4, 5) トリプレットの倍数ではないすべてのピタゴラス トリプレットを画面に出力するプログラムを作成します。 . プログラムはトリプレットを 3 タプルとして表し、次の 3 つの関数で構成する必要があります。

  • タプルを取り、ピタゴラスの関係が成り立つかどうかを示すブール値を返す関数。
  • タプルを受け取り、トリプレットが最小のトリプレットの倍数であるかどうかを示すブール値を返す関数。
  • 整数 n を取り、上で指定されたピタゴラスのトリプレットを生成する関数。この関数は、タプルのリストを返す必要があります。

プログラム pythagore.py の主要部分は、コマンド ライン入力を読み取り、上記の最後の関数を呼び出し、結果を 1 行に 1 つのトリプレットを出力します。

私の問題は、同じ組み合わせを異なる順序で取得していることです。たとえば、(5,12,13)​​、(13,12,5)...などです。

4

4 に答える 4

-1

3 つの数値が同じになることはないため、2 番目と 3 番目の範囲を (1,n) から (x+1,n) と (y+1,n) に変更するだけです。

于 2018-10-25T18:27:07.433 に答える