Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- //
- #define ll long long
- #define ull unsigned long long
- #define pb push_back
- #define mx 100010
- #define mod 1000000007
- #define inf INT_MAX
- #define pi acos(-1)
- #define endl '\n'
- #define fin freopen("input", "r", stdin)
- #define Fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
- //
- #define MAX 10000000
- vector<ll> v;
- set<ll> se, se1;
- void sieve()
- {
- vector<bool> isprime(MAX, 1);
- for (int i = 3; i * i <= MAX; i += 2)
- {
- if (isprime[i])
- {
- for (int j = i * i; j <= MAX; j += i + i)
- {
- isprime[j] = false;
- }
- }
- }
- v.push_back(2);
- for (int i = 3; i <= MAX; i += 2)
- {
- if (isprime[i])
- {
- v.push_back(i);
- }
- }
- }
- void prime_fac(ll n, ll m) {
- vector<ll>::iterator it;
- for (it = v.begin(); it != v.end(); it++)
- {
- if (n % *it == 0 || m % *it == 0)
- {
- se.insert(*it);
- while (n % *it == 0 || m % *it == 0)
- {
- if (n % *it == 0) n /= *it;
- if (m % *it == 0) m /= *it;
- }
- }
- }
- if (n != 1) se.insert(n);
- if (m != 1) se.insert(m);
- }
- int main() {
- sieve();
- ll t, a, b, x;
- cin >> t;
- set<ll>::iterator it;
- ll val = -1;
- vector<ll> res(MAX, 0);
- for (ll i = 0; i < t; i++) {
- scanf("%lld %lld", &a, &b);
- if (i == 0) prime_fac(a, b);
- else {
- ll cnt = 0;
- for (it = se.begin(); it != se.end(); it++) {
- if (*it > max(a, b)) break;
- if (a % *it == 0 || b % *it == 0) {
- res[cnt] += 1;
- if (res[cnt] == t - 1) { val = *it; break; }
- }
- cnt++;
- }
- }
- }
- if (t == 1) val = *se.begin();
- cout << val << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement