主要有两个数的积等于它们最大公约数和它们最小公倍数的积
#include<iostream>
#include<cmath>
using namespace std;
int gcd(int a,int b){
return a%b ? gcd(b,a%b) : b;
}
int main(){
int n,m,ans=0,sum=0;
cin>>n>>m;
if(n==m){
cout<<1;
return 0;}
sum=n*m;
for(int i=2;i<=sqrt(sum);i++){
if(sum%i==0&&gcd(i,sum/i)==n){
ans++;
}
}
cout<<ans*2;
return 0;
}