我正在尝试为 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 < 20
和 0 < 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/