首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算模逆

计算模逆
EN

Code Golf用户
提问于 2011-01-29 23:09:06
回答 7查看 875关注 0票数 18

给定两个正数xnx<2^n,写出尽可能最短的函数来计算x^{-1} \mod 2^n。换句话说,找到y这样的xy=1 \mod 2^n

您的函数必须在至少n=64的合理时间内完成,因此详尽的搜索将无法工作。

如果逆不存在,则必须以某种方式将其指示给调用方(抛出异常,返回一个哨位值等)。

如果您想知道从哪里开始,请尝试扩展欧氏算法

EN

回答 7

Code Golf用户

发布于 2016-07-16 14:43:43

Python,29字节

代码语言:javascript
复制
lambda x,n:pow(x,2**n-1,2**n)

它使用欧拉定理,观察到2^n−1可以被2^(n−1)−1除以2^(n−1)−1。这是足够快的n到7000左右,在那里它开始花费超过一秒钟。

票数 3
EN

Code Golf用户

发布于 2020-03-04 13:55:38

Python3.8 (预发行版),25字节

代码语言:javascript
复制
lambda a,b:pow(a,-1,2**b)

在网上试试!

票数 3
EN

Code Golf用户

发布于 2014-06-12 10:22:56

Mathatica-22

代码语言:javascript
复制
f=PowerMod[#,-1,2^#2]&

f[x,n]x*y=1 mod 2^n一起返回y,否则返回x is not invertible modulo 2^n

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档