#include using namespace std; #define ll long long #define rep(i, n) for (int i = 0; i < (int)(n); i++) template bool chmin(T& a, T b){if(a > b){a = b; return true;} return false;} template bool chmax(T& a, T b){if(a < b){a = b; return true;} return false;} const long long mod=998244353; const long long mod2=469762049; const long long mod100=1000000007; vectorget_Mu(int N){ vectorMu(N+1),lp; lp.assign(N+1,-1); Mu[0]=-2; Mu[1]=1; for(int i=2;i<=N;i++){ if(lp[i]==-1){ for(int j=i*2;j<=N;j+=i){ lp[j]=i; } Mu[i]=-1; } else{ if((i/lp[i])%lp[i]==0){ Mu[i]=0; } else{ Mu[i]=-Mu[i/lp[i]]; } } } return Mu; } int main(){ cout.tie()->sync_with_stdio(0); cin.tie(0); ll N,M;cin>>N>>M; vectorMu=get_Mu(N); ll ans=0; for(int i=1;i<=N;i++){ ll now=(N/i)*(M/i)*Mu[i]; ans+=now; } cout<