func_code_string: #include <bits/stdc++.h>   int a, b, yue[100000], l[10100], h[10100], p[10100], ans[10100], gs, c, n;   void qsort(int x, int y) {     int i, j, t, mid;     i = x;     j = y;     mid = yue[(i + j) / 2];     do {       while (yue[i] < mid) i++;       while (yue[j] > mid) j--;       if (i <= j) {         t = yue[i];         yue[i] = yue[j];         yue[j] = t;         i++;         j--;       }     } while (i <= j);     if (i < y) qsort(i, y);     if (x < j) qsort(x, j);   }   void qsort1(int x, int y) {     int i, j, t, mid;     i = x;     j = y;     mid = h[(i + j) / 2];     do {       while (h[i] > mid) i++;       while (h[j] < mid) j--;       if (i <= j) {         t = h[i];         h[i] = h[j];         h[j] = t;         t = l[i];         l[i] = l[j];         l[j] = t;         t = p[i];         p[i] = p[j];         p[j] = t;         i++;         j--;       }     } while (i <= j);     if (i < y) qsort1(i, y);     if (x < j) qsort1(x, j);   }   int gcd(int a, int b) {     if (a > b) {       int t;       t = a;       a = b;       b = t;     }     if (a == 0)       return b;     else       return gcd(b % a, a);   }   int main() {     int i, j;     while (scanf( %d %d , &a, &b) != EOF) {       c = gcd(a, b);       for (i = 1; i * i <= c; i++)         if (c % i == 0) {           gs++;           yue[gs] = i;           gs++;           yue[gs] = c / i;         }       qsort(1, gs);       scanf( %d , &n);       for (i = 0; i < n; i++) {         p[i] = i;         scanf( %d %d , &l[i], &h[i]);       }       qsort1(0, n - 1);       j = gs;       for (i = 0; i < n; i++) {         while (yue[j] > h[i]) j--;         if (yue[j] < l[i])           ans[p[i]] = -1;         else           ans[p[i]] = yue[j];       }       for (i = 0; i < n; i++) printf( %d n , ans[i]);     }     return 0;   }   