a,b,k = map(int,input().split())
# aの約数
a_divisor = []
# abの公約数
ab_divisor = []

# aで割れたら順次約数に追加
for i in range(1,a+1):
    if a % i == 0:
        a_divisor.append(i)

# aの約数でbが割れたら公約数に追加
for j in a_divisor:
    if b % j == 0:
        ab_divisor.append(j)
# リストの大きい方からK番目の数値を出力
print(ab_divisor[-k]) a,b,k = map(int,input().split()) a map(int,input().split()) map int input().split() ().split () input split b k a_divisor = [] a_divisor [] ab_divisor = [] ab_divisor [] for i in range(1,a+1):
    if a % i == 0:
        a_divisor.append(i)

# aの約数でbが割れたら公約数に追加 i range(1,a+1) range 1 a+1 a 1 if a % i == 0:
        a_divisor.append(i)

# aの約数でbが割れたら公約数に追加 a % i == 0 a % i a i 0 a_divisor.append(i) a_divisor.append a_divisor append i for j in a_divisor:
    if b % j == 0:
        ab_divisor.append(j)
# リストの大きい方からK番目の数値を出力 j a_divisor if b % j == 0:
        ab_divisor.append(j)
# リストの大きい方からK番目の数値を出力 b % j == 0 b % j b j 0 ab_divisor.append(j) ab_divisor.append ab_divisor append j print(ab_divisor[-k]) print ab_divisor[-k] ab_divisor -k k ab_divisor = [] [] ab_divisor b,k = map(int,input().split()) map(int,input().split()) b a_divisor = [] [] a_divisor a,b,k = map(int,input().split()) map(int,input().split()) a k = map(int,input().split()) map(int,input().split()) k
a,b,k = map(int,input().split())
# aの約数
a_divisor = []
# abの公約数
ab_divisor = []

# aで割れたら順次約数に追加
for i in range(1,a+1):
    if a % i == 0:
        a_divisor.append(i)

# aの約数でbが割れたら公約数に追加
for j in a_divisor:
    if b % j == 0:
        ab_divisor.append(j)
# リストの大きい方からK番目の数値を出力
print(ab_divisor[-k])