检查数字是否为斐波那契数字的功能?

Pru*_*Raj 2 python fibonacci python-3.x

我已经编写了一个程序,该程序将多个测试用例作为输入,而对于每个测试用例,则需要一个数字作为输入。最后,它检查您输入的数字是否是斐波那契数字,并进行相应打印。我在PC上运行它没有问题,但是当我将其上传到CodeChef.com(在这里看到了这个问题)时,它显示了运行时错误。感谢您的任何帮助,由于我是菜鸟,我的代码可能看起来很冗长。欢迎进行任何修改。谢谢!

这是我的代码:

def isperfect(n):
    import math
    if n < 0:
        print("No Solution")
        return False
    else:
        test = int(math.sqrt(n))
    return test*test == n
test_cases = int(input())
count = 0
store = []
while count < test_cases:
    x = int(input())
    store.append(x)
    count += 1
for each_item in store:
    assert isinstance(each_item, int)
    s1 = 5*each_item*each_item-4
    s2 = 5*each_item*each_item+4
    if(isperfect(s1) == True or isperfect(s2) == True):
        print("YES")
    else:
        print("NO")
Run Code Online (Sandbox Code Playgroud)

tam*_*ros 6

这是我遇到的最优雅的解决方案:

def is_fibonacci(n):
    phi = 0.5 + 0.5 * math.sqrt(5.0)
    a = phi * n
    return n == 0 or abs(round(a) - a) < 1.0 / n
Run Code Online (Sandbox Code Playgroud)

该代码不是我的,由@ sven-marnach发布。原始帖子: 检查输入属于python中的斐波那契数