python 3如何在内部处理大整数

时间:2018-05-10 07:31:07

标签: python python-3.x integer

我试图解决一个谜题,其中涉及找到包含n数字的第一个Fibonacci数。 我写了这个函数,并且惊喜地看到它适用于非常大的n值并且产生非常快的结果。这背后的秘密是什么?

def fib_morethan (n):
    '''return first Fibonacci number > n and its index'''
    if n < 0:
        return (1, 0)

    a, b = 0, 1
    counter = 1
    while b <= n:
        a, b, counter = b, a + b, counter + 1
    return counter + 1, b

测试输出

%time fib_morethan(10**70)
Wall time: 0 ns
(337, 12004657173391489668678522013941832147005954727556362660159637892443617)

%time fib_morethan(10**999)
Wall time: 1 ms
(4783, 10700...  (990 digits here)   ... 27816)

0 个答案:

没有答案