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 元组,并且应该包含三个函数:
- 一个函数,它接受一个元组并返回一个布尔值,指示毕达哥拉斯关系是否成立。
- 一个函数,它接受一个元组并返回一个布尔值,指示一个三元组是否是最小三元组的倍数。
- 一个函数,它接受一个整数 n 并生成上面指定的毕达哥拉斯三元组。该函数应该返回一个元组列表。
pythagore.py 程序的主要部分将读取命令行输入,调用上述最后一个函数,并每行打印一个三元组的结果。
我的问题是我以不同的顺序得到相同的组合,例如:(5,12,13),(13,12,5)...等