$n = p \mathrm{\;mod\;} n$ 递推次数的上界?
原问题
这个问题我最开始是从知乎1上看到的,里面提到了一种求逆元的方法,但是现在暂时没有方法能证明其复杂度。
众所周知,当我们选取一个质数
首先,根据余数的定义,我们有:
将其放在模
如果
又因为我们知道
如果直接使用递推式来计算逆元,也就变成了下面的算法:
1 2 3 4 | function INVERSE(n, p): if n == 1: return 1 return -(p / n) * INVERSE(p % n, p) |
需要注意一点,以上方法在
算法复杂度
该算法的递归次数实际上就是
实验数据
这个算法似乎并不能直接从表面上简单地看出它的迭代次数。通过对一个著名的质数
随机
强行计算出
递归次数 | 最小满足的 | 递归次数 | 最小满足的 |
---|---|---|---|
可以看出似乎递归次数
对于百度出来的一些答案,都是直接默认它每次
1 2 3 4 5 6 7 | ... 188 183 167 166 71 ... |
当
根号上界
根据知乎上@徐老丝的回答,我们有一个证明其递归次数
首先需要确定一个基本定理:
如果满足
$\frac1m p \lt n \leqslant \frac1{m-1} p$ ,那么$p \mathrm{\;mod\;} n \lt \frac1m p$ 。
证明 证明过程比较简单,只用确认
由于
根据以上定理,我们可以得到,如果一开始
期望次数分析
我自己思考了一种思路,似乎可以提供一种为什么该算法的递归次数非常少的解释。
首先注意到对于任意的
同时,对于任意的
更进一步,我们比较关注那种
现在用一张图来划分这两种
上图是
从一个给定的