#include #define rep(i,n) for(int i=0;i ; using Pll = pair; const int INF = 1e9; const int MOD = 1000000007; ll n,k,m; vector diviser; vector prime; vector> getPrimes_(ll x){ vector> res; for(ll i = 2; i * i <= x;i++){ if(x%i ==0){ res.push_back(make_pair(i,0)); while(x%i ==0) x /= i,res.back().second += k; } } if( x > 1) res.push_back(make_pair(x,k)); return res; } void dfs(int i,int d,ll now){ if(i == d) diviser.push_back(now); else{ ll res = 1; rep(j,prime[i].second+1){ if(res * now > m) break; dfs(i+1,d,now*res); res *= prime[i].first; } } } int main(){ cin >> n >> k >> m; prime = getPrimes_(n); dfs(0,prime.size(),1); cout << diviser.size() << endl; return 0; }