def gcd(x, y):
    if y == 0:
        return x
    else:
        return gcd(y,x%y)

a,b,k = map(int,input().split())
ans = gcd(a,b)
cnt = 1
while cnt < k:
    ans -= 1
    if a % ans == 0 and b % ans == 0:
        cnt += 1
print(ans) def gcd(x, y):
    if y == 0:
        return x
    else:
        return gcd(y,x%y) gcd if y == 0:
        return x
    else:
        return gcd(y,x%y) y == 0 y 0 return x x return gcd(y,x%y) gcd(y,x%y) gcd y x%y x y x x y y a,b,k = map(int,input().split()) a map(int,input().split()) map int input().split() ().split () input split b k ans = gcd(a,b) ans gcd(a,b) gcd a b cnt = 1 cnt 1 while cnt < k:
    ans -= 1
    if a % ans == 0 and b % ans == 0:
        cnt += 1 cnt < k cnt k ans -= 1 ans 1 if a % ans == 0 and b % ans == 0:
        cnt += 1 a % ans == 0 and b % ans == 0 a % ans == 0 a % ans a ans 0 b % ans == 0 b % ans b ans 0 cnt += 1 cnt 1 print(ans) print ans b,k = map(int,input().split()) map(int,input().split()) b k = map(int,input().split()) map(int,input().split()) k ans -= 1 1 ans cnt = 1 1 cnt a,b,k = map(int,input().split()) map(int,input().split()) a ans = gcd(a,b) gcd(a,b) ans def gcd(x, y):
    if y == 0:
        return x
    else:
        return gcd(y,x%y) def gcd(x, y):
    if y == 0:
        return x
    else:
        return gcd(y,x%y) gcd cnt += 1 1 cnt
def gcd(x, y):
    if y == 0:
        return x
    else:
        return gcd(y,x%y)

a,b,k = map(int,input().split())
ans = gcd(a,b)
cnt = 1
while cnt < k:
    ans -= 1
    if a % ans == 0 and b % ans == 0:
        cnt += 1
print(ans)