如何检查哪个更大:a**b 或 b**a 对于大数?
How to check which is greater: a**b or b**a for big numbers?
假设我有两个数字,a
和 b
这样
1 <= a, b <= 10**9
如何快速检查哪个更大:a^b
或 b^a
?直接在Python中计算a**b
太慢了。
与 Python 相关的问题相比,这更像是一个数学问题,但您可以使用 math.log
找到 b * math.log(a)
和 a * math.log(b)
并比较它们。
import math
a = 10
b = 9
if b * math.log(a) > a * math.log(b):
print("a^b is greater than b^a")
else if b * math.log(a)< a * math.log(b):
print("a^b is smaller than b^a")
如果a,b > e
那么你只能比较a,b:
考虑:
f(x) = x/ln x
:
然后:
f'(x) = (ln(x)-1) / ln(x)^2
对 x>e
是正的:因此 f 增加 x>e.
现在如果 a,b>e:
如果a>b <=> f(a) > f(b) <=> alog(b) > blog(a)
与 a<b
相同。
假设我有两个数字,a
和 b
这样
1 <= a, b <= 10**9
如何快速检查哪个更大:a^b
或 b^a
?直接在Python中计算a**b
太慢了。
与 Python 相关的问题相比,这更像是一个数学问题,但您可以使用 math.log
找到 b * math.log(a)
和 a * math.log(b)
并比较它们。
import math
a = 10
b = 9
if b * math.log(a) > a * math.log(b):
print("a^b is greater than b^a")
else if b * math.log(a)< a * math.log(b):
print("a^b is smaller than b^a")
如果a,b > e
那么你只能比较a,b:
考虑:
f(x) = x/ln x
:
然后:
f'(x) = (ln(x)-1) / ln(x)^2
对 x>e
是正的:因此 f 增加 x>e.
现在如果 a,b>e:
如果a>b <=> f(a) > f(b) <=> alog(b) > blog(a)
与 a<b
相同。