看知乎,偶然看到的一个数学题,排名前几位的答案已经给出了各种很好的口算、笔算方法。这类问题主要还是在于算法思路,如果这个数字更大,一些“暴力破解”的方法估计就不好使了。
这里针对这个问题,使用Python解决。
原问题链接:https://www.zhihu.com/question/328025939/answer/716242534
1.通过比较关系运算符返回的布尔值来判断
>>> 5**4321 > 4**5321
False
- 通过相除得到的商是否大于1来判断,和方法1本质一样
>>> 5**4321 / 4**5321
4.87724855272298e-184
- 一种取巧的方法,判断二者的位数,显然位数多的正整数大
>>> len(str(5**4321))-len(str(4**5321))
-183
- 通过取对数消除指数带来的高运算量
>>> import math
math.log(5)*4321>math.log(4)*5321
False