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
不会打印不正确的结果。这是绝对正确的。您的输入有误。
我想执行这个数学函数:
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
不会打印不正确的结果。这是绝对正确的。您的输入有误。