#include #include #include #include #include #include #include #include #include #include static const int MOD = 1000000007; using ll = int64_t; using u32 = uint32_t; using namespace std; template constexpr T INF = ::numeric_limits::max()/32*15+208; vector get_prime(int n) { if(n <= 1) return vector{}; vector prime(static_cast(n + 1), true); vector res; prime[0] = false; prime[1] = false; for(int i = 2; i * i <= n; i++){ if(prime[i]) for(int j = i << 1; j <= n; j += i) prime[j] = false; } for (int i = 2; i <= n; ++i) { if(prime[i]) res.emplace_back(i); } return res; } int main() { ll n, l; cin >> n >> l; auto v = get_prime(l); ll ans = 0; for (auto &&p : v) { if(l+1 <= p*(n-1)) break; ans += l-p*(n-1)+1; } cout << ans << "\n"; return 0; }