#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=3e7+5;
int vis[N],_phi[N],pri[N],n,ans,cnt;
void init(){
_phi[1]=1;
for(int i=2;i<N;i++){
if(!vis[i]){
pri[++cnt]=i;
_phi[i]=i-1;
}
for(int j=1;j<=cnt && i*pri[j]<N;j++){
vis[i*pri[j]]=1;
if(!(i%pri[j])){
_phi[i*pri[j]]=_phi[i]*pri[j];
break;
}
_phi[i*pri[j]]=_phi[i]*_phi[pri[j]];
}
}
}
int a,b,res1,res2,flaga=1,flagb=1;
signed main(){
init();
cin>>a>>b;
if(a<0) flaga=-1;
if(b<0) flagb=-1;
for(int d=1;d<=abs(a);d++) if(abs(a) % d==0) res1+=_phi[d];
for(int d=1;d<=abs(b);d++) if(abs(b) % d==0) res2+=_phi[d];
res1*=flaga,res2*=flagb;
cout<<res1+res2;
}
没有想出优化时空复杂度的方法。求大佬黑科技。