Python比较大数

2024-04-26 21:37:17 发布

您现在位置:Python中文网/ 问答频道 /正文

如何比较大数python? 我有两个号码:

x=99^85,y=73^62。在

在python解释器中计算这两个数字会得到以下结果:

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

即使不计算结果,很明显x将大于y。为了减少位数,我对这两个数字执行了mod 1000000007。我得到了以下结果:

^{pr2}$

如你所见,数字的mod结果导致y大于x。有没有一种有效的方法可以比较大量的数据并得到正确的结果。我不认为这个问题仅限于python,尽管问题的上下文在python下。在

提前谢谢


Tags: 数据方法mod数字解释器号码计算结果位数
2条回答

请看这个问题How does % work in Python?

模给出一个数的余数。所以4%10=4和14%10=4。因此,如果要直接比较两个数字,则使用模将丢失信息。
在python中比较大的数字非常快。使用ipython的%timeit查看。在

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

在我的系统(一个旧的i7,14gb的ram)上,它花费了46.3纳秒,几乎和python中的任何操作一样快。在

数量的“大小”对执行的影响非常小: “大数字”:

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

“小数字”:

^{pr2}$

如果问题是如何比较python中的数字,请使用>和{}:

>>> 5>9
False
>>> 5<9
True

相关问题 更多 >