如何比较大数量的python? 我有以下两个数字:
x = 99 ^ 85,y = 73 ^ 62。
在python解释器中计算两个数字会得到以下结果:
>>> x = 99 ** 85
>>> x
42559012338865490805205255842468783301592970011660094241731171697575386634867177511754750618655432231509140219114042806178869109409115320236642740915044006252790234308499
>>> y = 73 ** 62
>>> y
33575100975948386797110696048991269305533302609246066947133332393856972076850553634350302934134549900847114729991729
即使没有计算结果,很明显x会大于y。我对两个数字都执行mod 1000000007
以减少数字位数。我得到了以下结果:
>>> mod = 1000000007
>>> x % mod
195405172
>>> y % mod
297675700
>>>
正如您所看到的那样,数字的模态结果导致 y 大于 x 。是否有效地比较大数字并获得正确的结果。虽然问题的上下文是在python下,但我并不认为这个问题仅限于python。
提前致谢
答案 0 :(得分:0)
请参阅此问题How does % work in Python?
模数给你剩下的数字。因此,4%10 = 4和14%10 = 4.因此,对于直接比较两个数字,您将使用模数丢失信息 比较大数字在python中非常快。使用ipython的%timeit来查看。
%timeit (99 ** 85)>( 73 ** 62 )
在我的系统上(较旧的i7,14 GB的ram)它需要46.3纳秒,这与python中的任何操作一样快。
答案 1 :(得分:0)
'尺寸'该数字在执行期间的影响非常小: '大数字' :
>>> 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