首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python模块化结果与wolfram不同吗?

Python模块化结果与wolfram不同吗?
EN

Stack Overflow用户
提问于 2015-11-23 19:41:31
回答 4查看 1K关注 0票数 8

当我运行python 3程序时:

代码语言:javascript
代码运行次数:0
运行
复制
exp = 211
p = 199
q = 337

d = (exp ** (-1)) % ((p - 1)*(q - 1))

结果211^(-1)。

但是当我运行wolframα的计算时,我得到了我期望的结果。

我做了一些测试输出,程序中的变量exppq都是我在wolfram中使用的整数值。

我的目标是从(弱)加密整数派生私钥。如果我测试我的wolfram结果,我可以正确地解密加密的消息。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-11-23 19:52:44

Wolfram正在计算https://en.wikipedia.org/wiki/Modular_multiplicative_inverse。也就是说,它正在寻找整数x,这样

代码语言:javascript
代码运行次数:0
运行
复制
exp*x == 1 mod (p - 1)*(q - 1)

这与模运算符%不一样。这里,当给定问题中的表达式时,当1/exp除以(p - 1)*(q - 1)时,Python只是简单地计算余数。

这个答案复制Python代码,也可以用Python计算所需的值:

代码语言:javascript
代码运行次数:0
运行
复制
>>> modinv(exp, (p - 1)*(q - 1))
45403
票数 11
EN

Stack Overflow用户

发布于 2015-11-23 19:54:38

Wolfram没有定义良好的语法。它需要你提供的任意文本,并试图弄清楚你的输入是什么意思。在这种情况下,它决定你可能在寻找一个模逆,它给了你一个。

Python具有定义良好的语法。在Python中,解析器不会将**%放在一起,并猜测这种组合使这两个操作符的含义不同于它们通常的含义。**按通常的方法计算,然后%是模运算符。如果你想要一个模逆,你必须自己写一个。

票数 5
EN

Stack Overflow用户

发布于 2015-11-23 19:53:34

我认为这里的想法是wolfram和python对模块化操作的定义是不同的,这取决于您处理的是整数还是实数。在本例中,Wolfram使用模逆,因为它检测到第一个数字为0

关于实数这里定义的更多信息

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

https://stackoverflow.com/questions/33879279

复制
相关文章

相似问题

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