Я пытаюсь написать простой механизм кэширования для метода Евклида по нахождению 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)
.
Как я мог это реализовать?