给定两个正数x和n与x<2^n,写出尽可能最短的函数来计算x^{-1} \mod 2^n。换句话说,找到y这样的xy=1 \mod 2^n。
您的函数必须在至少n=64的合理时间内完成,因此详尽的搜索将无法工作。
如果逆不存在,则必须以某种方式将其指示给调用方(抛出异常,返回一个哨位值等)。
如果您想知道从哪里开始,请尝试扩展欧氏算法。
发布于 2016-07-16 14:43:43
lambda x,n:pow(x,2**n-1,2**n)它使用欧拉定理,观察到2^n−1可以被2^(n−1)−1除以2^(n−1)−1。这是足够快的n到7000左右,在那里它开始花费超过一秒钟。
发布于 2020-03-04 13:55:38
发布于 2014-06-12 10:22:56
f=PowerMod[#,-1,2^#2]&f[x,n]与x*y=1 mod 2^n一起返回y,否则返回x is not invertible modulo 2^n
https://codegolf.stackexchange.com/questions/215
复制相似问题