毕达哥拉斯三联体函数的复杂性是什么?

时间:2018-11-04 14:09:53

标签: python complexity-theory pythagorean

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

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

smallestTrip检查x,y,z是否为基本3,4,5直角三角形的倍数。

目标是生成所有可能的毕达哥拉斯三胞胎,其总和小于输入总和n。

(这些三胞胎不得为(3,4,5)三角形的倍数。)

这里的复杂度是否为O(n n logn)?

1 个答案:

答案 0 :(得分:2)

其他函数是O(1),在原始问题中,您有关于n的三个循环。因此复杂度为O(n * n * n)= O(n ^ 3)

此问题可能会进一步阐明Time complexity of nested for-loop