import fractions

A, B, K = list(map(int, input().split()))

# はじめにgcd(a, b)を求める

G = fractions.gcd(A, B)

# Gの約数がA, Bの公約数になるのでこれを列挙し、大きい順に並べてK番目を出力

i = 1

divisors = []

while i ** 2 <= G:

	if G % i == 0:

		divisors.append(i)

		divisors.append(G // i)

	i += 1

divisors = sorted(list(set(divisors)))[:: -1]

print((divisors[K - 1]))

A, B, K = list(map(int, input().split()))

D = []

for i in range(A, 0, -1):

	if A % i == 0 and B % i == 0:

		D.append(i)

print((D[K - 1]))

import fractions

A, B, K = list(map(int, input().split()))
# はじめにgcd(a, b)を求める
G = fractions.gcd(A, B)
# Gの約数がA, Bの公約数になるのでこれを列挙し、大きい順に並べてK番目を出力
i = 1
divisors = []
while i**2 <= G:
    if G % i == 0:
        divisors.append(i)
        divisors.append(G // i)
    i += 1
divisors = sorted(list(set(divisors)))[::-1]
print((divisors[K - 1]))

A, B, K = list(map(int, input().split()))
D = []
for i in range(A, 0, -1):
    if A % i == 0 and B % i == 0:
        D.append(i)
print((D[K - 1]))

-import fractions - -# はじめにgcd(a, b)を求める -G = fractions.gcd(A, B) -# Gの約数がA, Bの公約数になるのでこれを列挙し、大きい順に並べてK番目を出力 -i = 1 -divisors = [] -while i**2 <= G: -    if G % i == 0: -        divisors.append(i) -        divisors.append(G // i) -    i += 1 -divisors = sorted(list(set(divisors)))[::-1] -print((divisors[K - 1])) +D = [] +for i in range(A, 0, -1): +    if A % i == 0 and B % i == 0: +        D.append(i) +print((D[K - 1]))