我正在尝试为 Euclid 查找两个数字的 GCD 的方法编写一个简单的缓存机制:
gcd(a,0) = a
gcd(a,b) = gcd(b, a % b)
请注意gcd(a,b) == gcd(b,a)
.
对于缓存,我需要为给定的(a,b)
or找到一个键(b,a)
,使用0 < a < 20
and 0 < b < 20
。
当然,我可以使用key = a*20 + b
, 或key = a + b*20
,但它们是不对称的 - for 的密钥与 for(1,5)
不同(5,1)
。
我怎么能实现这个?