Math 如何正确使用PowMod?
如果必须执行以下计算: 正确的实施方法是什么Math 如何正确使用PowMod?,math,Math,如果必须执行以下计算: 正确的实施方法是什么 b^-c * powmod(g,s_3, p) 或 或 或 所以 g^s_3%p和b^-c%p应使用powmod解决。powmod的正确实现取决于您 也许对你有帮助 所以 g^s_3%p和b^-c%p应使用powmod解决。powmod的正确实现取决于您 可能会对您有所帮助。最后的%p当然是必需的,否则您可能会得到比p更大的结果 b^-c在这种情况下是极不正确的,因为它无法知道这是一个模幂运算,与正指数不同,它不仅是一个性能问题,也是一个正确性问
b^-c * powmod(g,s_3, p)
或
或
或
所以
g^s_3%p
和b^-c%p
应使用powmod
解决。powmod的正确实现取决于您
也许对你有帮助
所以
g^s_3%p
和b^-c%p
应使用powmod
解决。powmod的正确实现取决于您
可能会对您有所帮助。最后的
%p
当然是必需的,否则您可能会得到比p
更大的结果
b^-c
在这种情况下是极不正确的,因为它无法知道这是一个模幂运算,与正指数不同,它不仅是一个性能问题,也是一个正确性问题:正常的负指数给出一个分数结果,这在这里毫无意义
通过删除只留下最后一个建议:
(powmod(b,-c,p)*powmod(g,s_3,p))%p
最后的%p
当然是必需的,否则你会得到比p
大得多的结果
b^-c
在这种情况下是极不正确的,因为它无法知道这是一个模幂运算,与正指数不同,它不仅是一个性能问题,也是一个正确性问题:正常的负指数给出一个分数结果,这在这里毫无意义
通过删除只留下最后一个建议:
(powmod(b,-c,p)*powmod(g,s_3,p))%p
取决于powmod是否能处理负指数,最后一个是正确的。前两个具有不可解释的b^-c
(或者它被解释为对位序列的XOR
操作),第三个的结果可能大于p
,因为两个余数的乘积modp
可以与(p-1)^2一样大
要获得正确的负指数,请使用费马的小定理:
对于任何素数p
和a%p=0
一个人拥有a^(p-1)%p==1
因此,完整的计算是
(powmod(b, p-1-(c%(p-1)),p) * powmod(g,s_3,p) ) % p
根据powmod是否可以处理负指数,最后一个是正确的。前两个具有不可解释的b^-c
(或者它被解释为对位序列的XOR
操作),第三个的结果可能大于p
,因为两个余数的乘积modp
可以与(p-1)^2一样大
要获得正确的负指数,请使用费马的小定理:
对于任何素数p
和a%p=0
一个人拥有a^(p-1)%p==1
因此,完整的计算是
(powmod(b, p-1-(c%(p-1)),p) * powmod(g,s_3,p) ) % p
(a*b)%c=((a%c)*(b%c))%c你能处理负指数吗?@LutzL aw我都没想过。似乎处理负指数(a*b)%c=((a%c)*(b%c))%c你的powmod
处理负指数不是件小事吗?@LutzL aw我甚至没有想到这一点。处理负指数似乎不是件小事
(powmod(b,-c,p) * powmod(g,s_3, p)) % p
( a * b ) % c = (( a % c )*( b % c )) % c
(b^-c * g^s_3)) % p = ((b^-c % p)*(g^s_3 % p)) % p
(powmod(b, p-1-(c%(p-1)),p) * powmod(g,s_3,p) ) % p