Скажем, у меня есть два числа, a и b, так что

1 <= a, b <= 10**9

Как я могу быстро проверить, что больше: a^b или b^a? Вычисление a**b напрямую в Python слишком медленное.

3
planetp 22 Фев 2020 в 15:53

2 ответа

Лучший ответ

Это скорее математический вопрос, чем вопрос, связанный с 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")
4
yxor 22 Фев 2020 в 12:59

Если 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.

2
coder 22 Фев 2020 в 13:19