1
计算大整数的位数
给定二进制表示的两个整数和n,计算x n的位大小的复杂度是多少?xxxnnnxnxnx^n 这样做的一种方式是计算通过计算的近似日志2(X )以足够的精度。看来可以在O (M (k )log k )中完成以k位精度计算log 2(x ),其中M (1+⌊log2(xn)⌋=1+⌊nlog2(x)⌋1+⌊log2(xn)⌋=1+⌊nlog2(x)⌋1+\lfloor \log_2(x^n)\rfloor=1+\lfloor n\log_2(x)\rfloorlog2(x)log2(x)\log_2(x)log2(x)log2(x)\log_2(x)kkkO(M(k)logk)O(M(k)logk)O(M(k)\log k)是计算长度为 k的两个整数的乘积所需的时间。如果 s是 x和 n 的位大小的边界(如果我没有出错),这将产生一个复杂度大约为 O (s log 2 s )的(不是特别简单的)算法。M(k)M(k)M(k)kkkO(slog2s)O(slog2s)O(s\log^2 s)sssxxxnnn 我们可以击败,其中s是x和n的大小(如果它们具有可比较的大小)?是否有一种简单的算法可以使这种复杂性更好?O(slog2(s))O(slog2(s))O(s\log^2(s))sssxxxnnn 注意:我对诸如图灵机之类的理论模型的复杂性感兴趣。