-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathgcd_largeNos.cpp
More file actions
50 lines (44 loc) · 860 Bytes
/
Copy pathgcd_largeNos.cpp
File metadata and controls
50 lines (44 loc) · 860 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//sqrt(n)
#include <iostream>
#define mod 1000000007
#define lli long long int
using namespace std;
//lli gcd (lli A , lli B)
//{
// if(B == 0) return A;
// else return gcd ( B , A%B);
//}
lli gcd(lli A , lli B)
{
if(A == B || B == 0)
return A % mod;
if(A == 0)
return B % mod;
lli MIN,MAX;
if(A < B){
MIN = A;
MAX = B;
}
else {MIN = B;MAX=A;}
if(!(MAX % MIN))
return MIN;
lli check = 0;
for(lli i = 1 ; i*i<=MIN ; ++i)
if(!(MIN % i))
{
lli tmp = (MAX)%i;
if(!tmp)
check = max(check , i);
tmp = MAX%(MIN/i);
if(!tmp)
check = max(check , MIN/i);
}
return check%mod;
}
int main()
{
lli a , b;
cin>>a>>b;
cout<<gcd(a,b)<<"\n";
return 0;
}