math - 如何为两个可互换的整数创建唯一键?

标签 math hash greatest-common-divisor

我正在尝试为 Euclid 寻找两个数的 GCD 的方法编写一个简单的缓存机制:

gcd(a,0) = a
gcd(a,b) = gcd(b, a % b)

请注意 gcd(a,b) == gcd(b,a) .

对于缓存,我需要为给定的 (a,b) 找到一个键或 (b,a) , 与 0 < a < 200 < b < 20 .

当然,我可以使用 key = a*20 + b , 或 key = a + b*20 , 但那些是不对称的 - (1,5) 的关键不同于 (5,1) .

我该如何实现?

最佳答案

首先,对数字进行排序。

key = a > b ? b*20 + a : a*20 + b;

关于math - 如何为两个可互换的整数创建唯一键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7434612/

相关文章:

ruby - 从 Ruby 中的数组中查找最高、最低、总计、平均值和中位数

ruby : Generate a Hash of Hashes from an Array of Hashes

javascript - 带有 Html 基本标记的 Url 哈希

c - 简单的GCD程序无法运行

Java:获得最大公约数

c++ - 整数到 double 的转换

c++ - 在 C++ 中找到与方程匹配的最小整数

c++ - 多项式最大公约数 C++

algorithm - 如何通过改变上限计算总和

java - 在 SD 卡上组织数据以便快速搜索的最佳方式