#include<bits/stdc++.h>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long A,N,l,len,v[100001],ex[100001];
bool viz[2000000001];
void ciur(){
for(long long i=1;i<=N;++i)
if(!viz[i]){
v[++l]=i;
for(long long j=2;j*i<=N;++j)
viz[i*j]=1;
}
}
void descompfacprimi(int x){
ciur();
long long n=x,i=1;
while(v[i]*v[i]<=n){
if(x%v[i]==0){
ex[++len]=v[i];
while(x%v[i]==0)x/=v[i];
}
++i;
}
if(x>1)ex[++len]=x;
}
int main()
{
f>>A>>N;
descompfacprimi(N);
long long sol=N;
for(long long i=1;i<(1<<len);++i){
long long num=0,p=1;
for(long long j=1;j<=len;++j)
if(i&(1<<(j-1)))
++num,p*=ex[j];
if(num%2)p*=-1;
sol+=N/p;
}
g<<sol<<endl;
return 0;
}