这道题需要用__gcd(),否则会浮点溢出。
上代码!!!!!!!!!!
#include<bits/stdc++.h>
using namespace std;
long long a,b,x,ans;
int main()
{
scanf("%lld %lld",&a,&b);
if(a<b) swap(a,b);
ans=__gcd(a,b);
if(ans==1)ans=-1;
else
{
for(int i=2;i<=sqrt(min(a,b));i++)
{
if(a%i==0&&b%i==0)
{
x=i;
break;
}
}
a/=x;
b/=x;
ans=__gcd(a,b);
}
printf("%lld",ans);
return 0;
}
欢迎参考