/*
String[]の初期化、整数の型がlongになっているか
関数（splitとかcontainsとか）内では"+"とかは正規表現となされるので"\\+"とする
配列のコピーはarr1=arr.clone()
HashSet<>[]はおのおの初期化した？？？？？
 */
import java.util.*;
import java.awt.*;
import java.awt.geom.*;
import static java.lang.System.*;
import static java.lang.Math.*;
public class Main {
    public static void main(String[] $) {
        Scanner sc = new Scanner(in);
        int a=sc.nextInt(),b=sc.nextInt(),k=sc.nextInt();
        int c=0,ans=0;
        ArrayDeque<Integer> st=new ArrayDeque<>();
        for (int i = 1; i < a + 1; i++) {
            if(a%i==0&&b%i==0)st.addFirst(i);
        }
        while (c<k){
            ans=st.pollFirst();
            c++;
        }
        out.println(ans);
    }
} import java.util.*; util.* java import java.awt.*; awt.* java import java.awt.geom.*; geom.* java.awt import static java.lang.System.*; import static java.lang.System.*; import static java.lang.System.*; import static java.lang.Math.*; import static java.lang.Math.*; import static java.lang.Math.*; public class Main {
    public static void main(String[] $) {
        Scanner sc = new Scanner(in);
        int a=sc.nextInt(),b=sc.nextInt(),k=sc.nextInt();
        int c=0,ans=0;
        ArrayDeque<Integer> st=new ArrayDeque<>();
        for (int i = 1; i < a + 1; i++) {
            if(a%i==0&&b%i==0)st.addFirst(i);
        }
        while (c<k){
            ans=st.pollFirst();
            c++;
        }
        out.println(ans);
    }
} Main public static void main(String[] $) {
        Scanner sc = new Scanner(in);
        int a=sc.nextInt(),b=sc.nextInt(),k=sc.nextInt();
        int c=0,ans=0;
        ArrayDeque<Integer> st=new ArrayDeque<>();
        for (int i = 1; i < a + 1; i++) {
            if(a%i==0&&b%i==0)st.addFirst(i);
        }
        while (c<k){
            ans=st.pollFirst();
            c++;
        }
        out.println(ans);
    } main {
        Scanner sc = new Scanner(in);
        int a=sc.nextInt(),b=sc.nextInt(),k=sc.nextInt();
        int c=0,ans=0;
        ArrayDeque<Integer> st=new ArrayDeque<>();
        for (int i = 1; i < a + 1; i++) {
            if(a%i==0&&b%i==0)st.addFirst(i);
        }
        while (c<k){
            ans=st.pollFirst();
            c++;
        }
        out.println(ans);
    } Scanner sc = new Scanner(in); sc new Scanner(in) int a=sc.nextInt() a sc.nextInt() sc.nextInt sc b=sc.nextInt() b sc.nextInt() sc.nextInt sc k=sc.nextInt(); k sc.nextInt() sc.nextInt sc int c=0 c 0 ans=0; ans 0 ArrayDeque<Integer> st=new ArrayDeque<>(); st new ArrayDeque<>() for (int i = 1; i < a + 1; i++) {
            if(a%i==0&&b%i==0)st.addFirst(i);
        } int i = 1; int i = 1; i 1 i < a + 1 i a + 1 a 1 i++ i++ i {
            if(a%i==0&&b%i==0)st.addFirst(i);
        } {
            if(a%i==0&&b%i==0)st.addFirst(i);
        } if(a%i==0&&b%i==0)st.addFirst(i); a%i==0&&b%i==0 a%i==0 a%i a i 0 b%i==0 b%i b i 0 st.addFirst(i) st.addFirst st i while (c<k){
            ans=st.pollFirst();
            c++;
        } c<k c k {
            ans=st.pollFirst();
            c++;
        } ans=st.pollFirst() ans st.pollFirst() st.pollFirst st c++ c out.println(ans) out.println out ans String[] $ $ public class Main {
    public static void main(String[] $) {
        Scanner sc = new Scanner(in);
        int a=sc.nextInt(),b=sc.nextInt(),k=sc.nextInt();
        int c=0,ans=0;
        ArrayDeque<Integer> st=new ArrayDeque<>();
        for (int i = 1; i < a + 1; i++) {
            if(a%i==0&&b%i==0)st.addFirst(i);
        }
        while (c<k){
            ans=st.pollFirst();
            c++;
        }
        out.println(ans);
    }
} public class Main {
    public static void main(String[] $) {
        Scanner sc = new Scanner(in);
        int a=sc.nextInt(),b=sc.nextInt(),k=sc.nextInt();
        int c=0,ans=0;
        ArrayDeque<Integer> st=new ArrayDeque<>();
        for (int i = 1; i < a + 1; i++) {
            if(a%i==0&&b%i==0)st.addFirst(i);
        }
        while (c<k){
            ans=st.pollFirst();
            c++;
        }
        out.println(ans);
    }
} Main
/*
String[]の初期化、整数の型がlongになっているか
関数（splitとかcontainsとか）内では"+"とかは正規表現となされるので"\\+"とする
配列のコピーはarr1=arr.clone()
HashSet<>[]はおのおの初期化した？？？？？
 */
import java.util.*;
import java.awt.*;
import java.awt.geom.*;
import static java.lang.System.*;
import static java.lang.Math.*;
public class Main {
    public static void main(String[] $) {
        Scanner sc = new Scanner(in);
        int a=sc.nextInt(),b=sc.nextInt(),k=sc.nextInt();
        int c=0,ans=0;
        ArrayDeque<Integer> st=new ArrayDeque<>();
        for (int i = 1; i < a + 1; i++) {
            if(a%i==0&&b%i==0)st.addFirst(i);
        }
        while (c<k){
            ans=st.pollFirst();
            c++;
        }
        out.println(ans);
    }
}