你这个算法本身就不对,数据范围到 $10^5$,你还用双重循环,肯定会超时。
```c
int gcd(int a,int b){//最大公因数
if(b==0) return a;
gcd(b,a%b);
}
```
改为
```c
int gcd(int a,int b){//最大公因数
if(b==0) return a;
else return gcd(b,a%b);
}
```
@[DougNo1](/user/915921)
by lij123 @ 2024-04-23 18:33:33
其实用
```cpp
__gcd();
```
就可以
by fanjiayu666 @ 2024-04-25 13:59:54
```cpp
#include <bits/stdc++.h>
using namespace std;
int x,y,cnt;
int main(){
cin>>x>>y;
for(int i=2;i<=y;i++){
if(x*y%i!=0)continue;
int j=x*y/i;
if(__gcd(i,j)==x&&i*j/__gcd(i,j)==y){
cnt++;
}
}
cout<<cnt;
}
```
勿抄
by fanjiayu666 @ 2024-04-25 14:00:36