程序来验证二次方程是否有根

时间:2020-04-23 13:21:42

标签: python math algebra

我正在解决将数字表示为连续数字之和的问题。

所以我想出了如果我们用公式n((n+1)//2)来获得二次方程式的根,我们就可以做到o(1)的时间复杂度。

假设我们有任何数字x,如果使用上述公式n((n + 1)// 2)形成的二次方程式和数字x包含任何有效的根,则它可以是连续数字的和。不是。

1 个答案:

答案 0 :(得分:1)

您正在寻找x ^ 2 + x-2N = 0的解决方案,其中N是x之前的数字总和所产生的总数。如果x是整数,则有解决方案。使用标准的二次方程式解决方案,我们得出:

x =(-1 +√(1 + 8N))/ 2

所以您可以这样编写函数:

def isSumToN(N):
    x = ((8*N+1)**0.5-1)/2
    return int(x) if x%1==0 else False

输出:

isSumToN(10)  # 4
isSumToN(101) # False
相关问题