import java.util.*;

class Main{
  static int gcd(int c,int d){
    while(true){
      int f=c%d;
      if(f==0){
        return d;
      }
      c=d;
      d=f;
    }
  }
  static ArrayList<Integer> divList(int n){
    ArrayList<Integer> div=new ArrayList<Integer>();
    for(int i=1;i*i<=n;i++){
      if(n%i==0){
        div.add(i);
        if(i*i!=n){
          div.add((int)(n/i));
        }
      }
    }
    return div;
  }
  public static void main(String[] args){
    Scanner sc=new Scanner(System.in);
    int a=sc.nextInt();
    int b=sc.nextInt();
    int c=gcd(a,b);
    List<Integer> l=divList(c);
    Collections.sort(l);
    System.out.println(l.get(l.size()-sc.nextInt()));
  }
} import java.util.*; util.* java class Main{
  static int gcd(int c,int d){
    while(true){
      int f=c%d;
      if(f==0){
        return d;
      }
      c=d;
      d=f;
    }
  }
  static ArrayList<Integer> divList(int n){
    ArrayList<Integer> div=new ArrayList<Integer>();
    for(int i=1;i*i<=n;i++){
      if(n%i==0){
        div.add(i);
        if(i*i!=n){
          div.add((int)(n/i));
        }
      }
    }
    return div;
  }
  public static void main(String[] args){
    Scanner sc=new Scanner(System.in);
    int a=sc.nextInt();
    int b=sc.nextInt();
    int c=gcd(a,b);
    List<Integer> l=divList(c);
    Collections.sort(l);
    System.out.println(l.get(l.size()-sc.nextInt()));
  }
} Main static int gcd(int c,int d){
    while(true){
      int f=c%d;
      if(f==0){
        return d;
      }
      c=d;
      d=f;
    }
  } gcd {
    while(true){
      int f=c%d;
      if(f==0){
        return d;
      }
      c=d;
      d=f;
    }
  } while(true){
      int f=c%d;
      if(f==0){
        return d;
      }
      c=d;
      d=f;
    } true {
      int f=c%d;
      if(f==0){
        return d;
      }
      c=d;
      d=f;
    } int f=c%d; f c%d c d if(f==0){
        return d;
      } f==0 f 0 {
        return d;
      } return d; d c=d c d d=f d f int c c int d d static ArrayList<Integer> divList(int n){
    ArrayList<Integer> div=new ArrayList<Integer>();
    for(int i=1;i*i<=n;i++){
      if(n%i==0){
        div.add(i);
        if(i*i!=n){
          div.add((int)(n/i));
        }
      }
    }
    return div;
  } divList {
    ArrayList<Integer> div=new ArrayList<Integer>();
    for(int i=1;i*i<=n;i++){
      if(n%i==0){
        div.add(i);
        if(i*i!=n){
          div.add((int)(n/i));
        }
      }
    }
    return div;
  } ArrayList<Integer> div=new ArrayList<Integer>(); div new ArrayList<Integer>() for(int i=1;i*i<=n;i++){
      if(n%i==0){
        div.add(i);
        if(i*i!=n){
          div.add((int)(n/i));
        }
      }
    } int i=1; int i=1; i 1 i*i<=n i*i i i n i++ i++ i {
      if(n%i==0){
        div.add(i);
        if(i*i!=n){
          div.add((int)(n/i));
        }
      }
    } {
      if(n%i==0){
        div.add(i);
        if(i*i!=n){
          div.add((int)(n/i));
        }
      }
    } if(n%i==0){
        div.add(i);
        if(i*i!=n){
          div.add((int)(n/i));
        }
      } n%i==0 n%i n i 0 {
        div.add(i);
        if(i*i!=n){
          div.add((int)(n/i));
        }
      } div.add(i) div.add div i if(i*i!=n){
          div.add((int)(n/i));
        } i*i!=n i*i i i n {
          div.add((int)(n/i));
        } div.add((int)(n/i)) div.add div (int)(n/i) n i return div; div int n n public static void main(String[] args){
    Scanner sc=new Scanner(System.in);
    int a=sc.nextInt();
    int b=sc.nextInt();
    int c=gcd(a,b);
    List<Integer> l=divList(c);
    Collections.sort(l);
    System.out.println(l.get(l.size()-sc.nextInt()));
  } main {
    Scanner sc=new Scanner(System.in);
    int a=sc.nextInt();
    int b=sc.nextInt();
    int c=gcd(a,b);
    List<Integer> l=divList(c);
    Collections.sort(l);
    System.out.println(l.get(l.size()-sc.nextInt()));
  } Scanner sc=new Scanner(System.in); sc new Scanner(System.in) int a=sc.nextInt(); a sc.nextInt() sc.nextInt sc int b=sc.nextInt(); b sc.nextInt() sc.nextInt sc int c=gcd(a,b); c gcd(a,b) gcd a b List<Integer> l=divList(c); l divList(c) divList c Collections.sort(l) Collections.sort Collections l System.out.println(l.get(l.size()-sc.nextInt())) System.out.println System.out System System.out l.get(l.size()-sc.nextInt()) l.get l l.size()-sc.nextInt() l.size() l.size l sc.nextInt() sc.nextInt sc String[] args args
import java.util.*;

class Main{
  static int gcd(int c,int d){
    while(true){
      int f=c%d;
      if(f==0){
        return d;
      }
      c=d;
      d=f;
    }
  }
  static ArrayList<Integer> divList(int n){
    ArrayList<Integer> div=new ArrayList<Integer>();
    for(int i=1;i*i<=n;i++){
      if(n%i==0){
        div.add(i);
        if(i*i!=n){
          div.add((int)(n/i));
        }
      }
    }
    return div;
  }
  public static void main(String[] args){
    Scanner sc=new Scanner(System.in);
    int a=sc.nextInt();
    int b=sc.nextInt();
    int c=gcd(a,b);
    List<Integer> l=divList(c);
    Collections.sort(l);
    System.out.println(l.get(l.size()-sc.nextInt()));
  }
}