############################################################### #https://atcoder.jp/contests/abc249/submissions/71937223 import math def smallest_prime_facror(n): res=list(range(n+1)) for i in range(2,int(math.isqrt(n))+1): if res[i]==i: for j in range(i*i,n+1,i): if res[j]==j: res[j]=i return res spf=smallest_prime_facror(10000000) def prime_factorization(n): factors={} current=n while current>1: factors[spf[current]]=factors.get(spf[current],0)+1 current//=spf[current] return factors def divisors(n): factors=prime_factorization(n) divs=[1] for p,e in factors.items(): m=len(divs) mul=1 for _ in range(e): mul*=p for i in range(m): divs.append(divs[i]*mul) return divs ############################################################### N,M=map(int,input().split()) meb=[1] ans=0 for d in range(1,min(N,M)+1): if d==1: meb.append(1) ans+=N*M continue p=spf[d] if d%(p*p)==0: meb.append(0) continue m=-meb[d//p] ans+=m*(N//d)*(M//d) meb.append(m) print(ans)