Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中整数比较的时间复杂度_Python_Python 2.7_Time Complexity - Fatal编程技术网

python中整数比较的时间复杂度

python中整数比较的时间复杂度,python,python-2.7,time-complexity,Python,Python 2.7,Time Complexity,在Python中,对于非常大的整数,整数比较的时间复杂度是多少?例如,如果我们使用2个函数计算1000的阶乘,然后检查等式,是O(1)吗 答案并不简单,但答案是显而易见的;-) 也就是说,如果两个整数实际上相等,不比较它们的所有位就不可能知道这一点。因此,在相等的情况下,所需的时间与位数成正比(如果N是比较数之一,则与log(abs(N))成正比) 如果它们事实上不相等,那么有几种情况,都与实现内部有关。长整数以2的幂为基数存储为“数字”向量。如果向量的长度不同,那么整数就不相等,这需要恒定的时

在Python中,对于非常大的整数,整数比较的时间复杂度是多少?例如,如果我们使用2个函数计算1000的阶乘,然后检查等式,是O(1)吗


答案并不简单,但答案是显而易见的;-)

也就是说,如果两个整数实际上相等,不比较它们的所有位就不可能知道这一点。因此,在相等的情况下,所需的时间与位数成正比(如果
N
是比较数之一,则与
log(abs(N))成正比)

如果它们事实上不相等,那么有几种情况,都与实现内部有关。长整数以2的幂为基数存储为“数字”向量。如果向量的长度不同,那么整数就不相等,这需要恒定的时间

但如果它们的长度相同,则必须对“数字”进行比较,直到找到第一对(如果有)不匹配的数字。这需要与需要比较的位数成比例的时间


然后将以上所有内容复杂化,以考虑可能的符号混合。

对于我的python 2.7.12,我有一个错误:RuntimeError:最大递归深度exceeded@Louis检查这里:@ayushgp CodeSkulpter不是它自己的Python实现。它是专门为赖斯大学的一门课程而制作的。它的行为不像通常的Python中的CPython,因此为什么人们会因为你的代码而得到“最大递归深度”错误我编辑代码只是为了专注于我所问的问题。现在还不清楚你所说的N是什么,你似乎在说同时比较的是O(N)和O(logN)。这听起来好像有一个正确的答案在那里的某个地方,也许更容易,如果你只是在具体的情况下,1000!==1000!如果您正在比较
N==M
,并且它们相等,则所需的时间与
log(abs(N))
成比例-与表示
N
所需的位数成比例。如果它们不相等,请再次阅读答案;-)为什么要对两个相同的亿万长的O(log(zillion))位序列进行顺序的、彻底的比较?事实并非如此。如果您有两个相等的亿万位序列,那么需要进行亿万位比较才能知道这一点。但是如果你比较两个整数,每个整数等于一个百万,那么只需要
log2(百万)
位比较。@TimPeters好的,N是数字本身,这就是我想让你澄清的。
def fact(n):
    prod = 1
    for i in range(n):
        prod = prod * (i + 1)
    return prod

i = fact(1000)
j = fact(1000)

# Complexity of this check?
if i == j:
    print "Equal"