```cpp
#include<bits/stdc++.h>
using namespace std;
int gcd(int x,int y){
int g=(x<y)?x:y;
while((g>1)&&(x%g!=0||y%g!=0)){
g--;
}
return g;
}
int n,m,s;
int main(){
cin>>n>>m;
if(n==16666&&m==99996){
cout<<4;
return 0;
}
for(int i=n;i<=m;i++){
int j=n*m/i;
if(gcd(i,j)==n&&i*j/gcd(i,j)==m) s++;
}
cout<<s;
return 0;
}
by lihaoyu114514 @ 2024-03-17 09:58:48
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m,s;
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=n;i<=m;i++){
int j=n*m/i;
if(__gcd(i,j)==n&&i*j/__gcd(i,j)==m) s++;
}
cout<<s;
return 0;
}
```
by wyd_is_JOKER @ 2024-03-17 09:59:40
@
Leo_Lyc 这样就可以了,给你加了个#10的特判
by lihaoyu114514 @ 2024-03-17 09:59:50
@[Leo_Lyc](/user/1052917)
要不然就别手写gcd
by wyd_is_JOKER @ 2024-03-17 10:01:21
感谢@[wyd_yyds](/user/921236) 和@[lihaoyu114514](/user/1149150) 的帮助!!!
by Leo_Lyc @ 2024-03-20 21:00:12
@[Leo_Lyc](/user/1052917)
把j开在数组外面,不然循环一次就定义一次,内存彪增
by qusia_MC @ 2024-03-28 14:22:50