Python Сравнение больших чисел - PullRequest
0 голосов
/ 22 мая 2018

Как можно сравнить большие числа Python?У меня есть следующие два числа:

x = 99 ^ 85, y = 73 ^ 62.

Вычисление обоих чисел в интерпретаторе python дает следующие результаты:

>>> x = 99 ** 85
>>> x
42559012338865490805205255842468783301592970011660094241731171697575386634867177511754750618655432231509140219114042806178869109409115320236642740915044006252790234308499
>>> y = 73 ** 62
>>> y
33575100975948386797110696048991269305533302609246066947133332393856972076850553634350302934134549900847114729991729

Даже без вычисления результатов совершенно очевидно, что х будет больше, чем у.Я выполнил mod 1000000007 на обоих числах, чтобы уменьшить количество цифр.Я получил следующие результаты:

>>> mod = 1000000007
>>> x % mod
195405172
>>> y % mod
297675700
>>> 

Как вы можете видеть, результаты мод чисел приводит к тому, что y превышает x .Существует ли эффективный способ сравнения больших чисел и получения правильных результатов.Я не думаю, что эта проблема связана только с питоном, хотя контекст вопроса находится под питоном.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

«Размер» числа имеет очень небольшое влияние на срок исполнения: «большие числа»:

>>> timeit.timeit('a=99**85; b=73**52; a>b')
0.07298588752746582

«маленькие числа»:

>>> timeit.timeit('a=5**2; b=6**3; a>b')
0.07102680206298828

ЕслиВопрос в том, как сравнить числа в Python > и <:

>>> 5>9
False
>>> 5<9
True
0 голосов
/ 22 мая 2018

Пожалуйста, посмотрите этот вопрос Как% работает в Python?

По модулю вы получите остаток от числа.Таким образом, 4% 10 = 4 и 14% 10 = 4. Таким образом, для непосредственного сравнения двух чисел вы потеряете информацию, используя модуль.
Сравнение больших чисел довольно быстро в python.Используйте% timeit ipython, чтобы увидеть.

%timeit (99 ** 85)>( 73 ** 62 )

В моей системе (более старый i7, 14 ГБ ОЗУ) это заняло 46,3 наносекунды, что примерно так же быстро, как любая операция в Python.

...