#include using namespace std; #define iota(i,n,b,s) for(int i=int(b);i!=int((b)+(s)*(n));i+=(s)) #define range(i,n,m) iota(i,(((n)>(m))?((n)-(m)):((m)-(n))),(n),((n)>(m)?-1:1)) #define rep(i,n) iota(i,(n),0,1) #define loop for(;;) #define INF (1e9) #define EPS (1e-9) #define cons(a,b) (make_pair(a,b)) #define car(a) (a.first) #define cdr(a) (a.second) #define cadr(a) (car(cdr(a))) #define cddr(a) (cdr(cdr(a))) #define all(a) a.begin(), a.end() #define trace(var) cerr<<">>> "<<#var<<" = "< vi; typedef vector vs; typedef map Dictionary; const Real PI = acos(-1); typedef pair P; // Point typedef pair L; // segment or line template ostream& operator<<(ostream& os, pair p) { os << '(' << car(p) << ", " << cdr(p) << ')'; return os; } template ostream& operator<<(ostream& os, vector v) { if (v.size() == 0) { os << "(empty)"; return os; } os << v[0]; for (int i=1, len=v.size(); i> n >> k; vector cs(n+1, 0); range (m, 2, n + 1) { if (ps[m]) { for (int k = m; k <= n; k += m) cs[k]++; } } int ans = 0; range (m, 2, n + 1) { if (cs[m] >= k) ++ans; } cout << ans << endl; return 0; }