pow() 函数给出错误的结果

pow() function gives wrong result

我想执行这个数学函数:

3^(3^1000000000) mod 1000000007

结果是:930782551

但是直接在python中执行会耗费大量时间,而且程序挂了:

return pow(3,pow(3,1000000000),1000000007) 

所以我认为执行这个会是一样的:

return pow(3,pow(3,1000000000, 1000000007),1000000007) 

但结果是:270196661

怎样才能在合理的时间内得到正确的结果930782551

Edit

一开始以为是sintaxis的问题,于是回答:

return pow(3,pow(3,1000000000),1000000007)

但这花费了不合理的时间。所以我尝试解决计算时间的问题,但是没及时解决:).

The perfect answer is the @Coldspeed one, he could solve the computing time issue just great, the whole explain is there

根据您对问题的修改,使用

>>> pow(3, pow(3, 1000000000, 500000003), 1000000007)
930782551

任何其他事情都需要永远计算。该表达式是使用费马小定理获得的。

我在 math.stackexchange.com 上问了一个 question。最重要的是,pow 不会打印不正确的结果。这是绝对正确的。您的输入有误。