Problem:
Score : 200 points

Problem Statement

You are given positive integers A and B.

Find the K-th largest positive integer that divides both A and B.

The input guarantees that there exists such a number.

Constraints

All values in input are integers.

1 \leq A, B \leq 100

The K-th largest positive integer that divides both A and B exists.

K \geq 1

Input

Input is given from Standard Input in the following format:

A B K

Output

Print the K-th largest positive integer that divides both A and B.

Sample Input 1

8 12 2

Sample Output 1

2

Three positive integers divides both 8 and 12: 1, 2 and 4.
Among them, the second largest is 2.

Sample Input 2

100 50 4

Sample Output 2

5

Sample Input 3

1 1 1

Sample Output 3

1

Solution in C# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Linq;
using static System.Console;
using static System.Convert;
using static System.Math;
//using static System.Globalization.CultureInfo;

class Program
{
    static void Main(string[] args)
    {/*
        var nm = Add.ar;
        var ads = new List<int>[nm[0]];
        for (var i = 0; i < nm[0]; i++)
            ads[i] = new List<int>();
        var ct = 0L;
        for(var i = 0; i < nm[1]; i++)
        {
            var inp = Add.ar;
            ads[inp[0] - 1].Add(inp[1] - 1);
        }
        for(var i = 0; i < nm[0]; i++)
        {

        }*/
        var abk = Add.ar;
        var list = new List<int>();
        for(var i = 1; i <= Min(abk[0], abk[1]); i++)
        {
            if (abk[0] % i == 0 && abk[1] % i == 0)
            {
                list.Add(i);
            }
        }
        list = list.OrderByDescending(v => v).ToList();
        WriteLine(list[abk[2] - 1]);
    }
}

public class Add
{
    public static string read => ReadLine();
    public  static int[] ar => Array.ConvertAll(read.Split(' '), int.Parse);
    public  static int num => ToInt32(read);
    public  static long[] arL => Array.ConvertAll(read.Split(' '), long.Parse);
    public  static long numL => ToInt64(read);
    public  const string Alfa = "abcdefghijklmnopqrstuvwxyz";
    public  const int MOD = 1000000007;
}