I am studying how to calculate RSA, and in the way the formula has something related to GCD, not only in RSA also in Affine Cipher also has a condition that gcd(a, b) = 1 when choosing a and b as keys.

So this is a code snippet after I have learned about gcd.
The formula is gcd(a, b) = gcd(b, a mod b), count until b = 0 (i.e. which means no more remainder left after divide by b) to find the gcd which is a.

# Euclidean Algorithm
# gcd(a, b) = gcd(b, a mod b)
# only interested in getting a.
# the final outcome will be gcd(a, b=0)
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
# Example gcd(792, 35)
# gcd(792, 35) = gcd(35, 792 mod 35) = gcd(35, 22)
# gcd(22, 35 mod 22) = gcd(22, 13)
# gcd(13, 22 mod 13) = gcd(13, 9)
# gcd(9, 13 mod 9) = gcd(9, 4)
# gcd(4, 9 mod 4) = gcd(4, 1)
# gcd(1, 4 mod 1) = gcd(1, 0)
# final result is 1, while b is 0
gcd = gcd(792, 35)
print(gcd)