在Python 3中将两个整数映射为一个整数

时间:2018-07-05 01:33:45

标签: python python-3.x hash mapping

我想将两个整数映射为一个类,用于 hash 函数。这些整数的范围是0到12856320000000。我听说我可以使用下面的Cantour配对功能来实现

enter image description here

但是,我的sys.maxsize

9223372036854775807

结果,如以下示例所示,当k1和k2较大时,答案将不是整数

k1 = 6887309306
k2 = 6887309307
pi(k1,k2)=9.487005898057764e+19

反正有解决此问题的方法吗?谢谢

1 个答案:

答案 0 :(得分:3)

您的问题不是由数字引起的,而是由您除以2的事实引起的。Python3.x中的除法总是产生浮点数。您应该使用整数除法:

(k1 + k2) * (k1 + k2 + 1) // 2 + k2
#94870058980577640498