def f(a):
	r = []
	for d in range(1,int(a ** 0.5) + 1):
		if a % d == 0:
			r.append(d)	
			if d * d != a: r.append(a/d)
	return r if r else [1]
a,b,k = map(int, raw_input().split(' '))
r = []
for d in f(a):
	if d in f(b):
		r.append(d)

r.sort()

print r[-k] def f(a):
	r = []
	for d in range(1,int(a ** 0.5) + 1):
		if a % d == 0:
			r.append(d)	
			if d * d != a: r.append(a/d)
	return r if r else [1] f r = [] r [] for d in range(1,int(a ** 0.5) + 1):
		if a % d == 0:
			r.append(d)	
			if d * d != a: r.append(a/d)
	 d range(1,int(a ** 0.5) + 1) range 1 int(a ** 0.5) + 1 int(a ** 0.5) int a ** 0.5 a 0.5 1 if a % d == 0:
			r.append(d)	
			if d * d != a: r.append(a/d)
	 a % d == 0 a % d a d 0 r.append(d) r.append r append d if d * d != a: r.append(a/d)
	 d * d != a d * d d d a return r if r else [1] r if r else [1] r r [1] 1 a a a,b,k = map(int, raw_input().split(' ')) a map(int, raw_input().split(' ')) map int raw_input().split(' ') ().split () raw_input split ' ' b k r = [] r [] for d in f(a):
	if d in f(b):
		r.append(d) d f(a) f a if d in f(b):
		r.append(d) d in f(b) d f(b) f b r.append(d) r.append r append d r.sort() r.sort r sort print r[-k] r -k k r = [] [] r b,k = map(int, raw_input().split(' ')) map(int, raw_input().split(' ')) b def f(a):
	r = []
	for d in range(1,int(a ** 0.5) + 1):
		if a % d == 0:
			r.append(d)	
			if d * d != a: r.append(a/d)
	return r if r else [1] def f(a):
	r = []
	for d in range(1,int(a ** 0.5) + 1):
		if a % d == 0:
			r.append(d)	
			if d * d != a: r.append(a/d)
	return r if r else [1] f k = map(int, raw_input().split(' ')) map(int, raw_input().split(' ')) k a,b,k = map(int, raw_input().split(' ')) map(int, raw_input().split(' ')) a
def f(a):
	r = []
	for d in range(1,int(a ** 0.5) + 1):
		if a % d == 0:
			r.append(d)	
			if d * d != a: r.append(a/d)
	return r if r else [1]
a,b,k = map(int, raw_input().split(' '))
r = []
for d in f(a):
	if d in f(b):
		r.append(d)

r.sort()

print r[-k]