#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
#define Type int
#define Max 450
bool prime[Max];
Type primeTable[Max];
Type primeRadiation(const Type& size){
prime[1]=false;
prime[2]=true;
primeTable[1]=2;
Type index=1;
for(Type i=4;i<=size;i+=2) prime[i]=false;
for(Type i=3;i<=sqrt(size);++i){
if(prime[i]==true){
++index;
primeTable[index]=i;
const Type step=i*2;
for(int j=i*i;j<=size;j+=step) prime[j]=false;
}
}
return index;
}
Type fun(Type n,Type p){
if(n<p) return 0;
else return n/p+fun(n/p,p);
}
int main(){
memset(prime,true,sizeof(prime));
memset(primeTable,0,sizeof(primeTable));
Type n;
Type m;
const Type size=primeRadiation(Max);
long long ans;
while(cin>>n>>m){
ans=1;
for(Type i=1;i<=size;++i){
if(primeTable[i]>n) break;
Type t=fun(n,primeTable[i])-fun(m,primeTable[i])-fun(n-m,primeTable[i]);
ans*=(t+1);
}
cout<<ans<<endl;
}
return 0;
}