我正在用一些非常大的整数做数学运算。
a = 31996668987763407681122759688456544309672343150929660388579183552361635866801156544232571947743874725979555497520523522346401055454482083604132068875682407856840777680593298408744110565645330171439181217418003690336265057898770006993262504197730133462633746536775133255794409751405563787960359702382804112171
b = 39968994684638711836407811558710897608154894441192087061775791249778058326081126973380030666547998821808510867638001640200591424558526984429037057968138897066811746967227206925805583433142576048672441996779241452541173593726000243556949694666514411183712602623210008357435625692818212348302989308982968351093
c = 3
d = 147872003727713417434649045868124227470358241161885989151697119747919639511713324111730603260513079593711814002873476888445112729255355342390940137327249579433589085077949825049858146087889814189447823045724364491938625398705217973625992967711785074731810147958544135244184552999399993914543567731757595617769
然后
result = a * (b ** c) % d
assert result == a * pow(b, c, d)
抛出一个断言错误。
它们为什么不同?
哪一个是正确的?
答案 0 :(得分:8)
您需要添加一些括号:
result = a * ((b ** c) % d)
assert result == a * pow(b, c, d) # this will be True now
答案 1 :(得分:0)
结果 == a * pow(b, c, d)
#如果条件返回True,则什么都不发生:
#if 条件返回 False,引发 AssertionError:
pow(x,y,z)
所以,结果,a*((b**c)%b)
会更正