#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define all(a) a.begin() ,a.end()
vector<ll> sieve(ll n)
{
vector<bool> prime(n + 1, true);
prime[0] = false;
prime[1] = false;
for (ll i = 2; i*i <= n; i++) {
// If prime[i] is not changed, then it
// is a prime
if (prime[i]) {
// Update all multiples of p
for (ll j = i * i; j <= n; j += i)
prime[j] = false;
}
}
// push all the primes into the vector ans
vector<ll> ans;
for (ll i = 0; i < n; i++)
if (prime[i])
ans.push_back(i);
return ans;
}
vector<ll> sieveRange(ll l , ll r){
vector<ll> primeSieve = sieve(r);
ll lower_bound_prime = lower_bound(all(primeSieve),l)-primeSieve.begin();
primeSieve.erase(primeSieve.begin(),primeSieve.begin()+lower_bound_prime);
return primeSieve;
}
int main() {
ll l =12;
ll r = 100;
vector<ll>ans = sieveRange(l,r);
for(int x:ans)cout<<x<<" ";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpICxhLmVuZCgpCgp2ZWN0b3I8bGw+IHNpZXZlKGxsIG4pIAp7IAoJdmVjdG9yPGJvb2w+IHByaW1lKG4gKyAxLCB0cnVlKTsgCiAJcHJpbWVbMF0gPSBmYWxzZTsgCglwcmltZVsxXSA9IGZhbHNlOyAKIAlmb3IgKGxsIGkgPSAyOyBpKmkgPD0gbjsgaSsrKSB7IAogCgkJLy8gSWYgcHJpbWVbaV0gaXMgbm90IGNoYW5nZWQsIHRoZW4gaXQgCgkJLy8gaXMgYSBwcmltZSAKCQlpZiAocHJpbWVbaV0pIHsgCiAKCQkJLy8gVXBkYXRlIGFsbCBtdWx0aXBsZXMgb2YgcCAKCQkJZm9yIChsbCBqID0gaSAqIGk7IGogPD0gbjsgaiArPSBpKSAKCQkJCXByaW1lW2pdID0gZmFsc2U7IAoJCX0gCgl9IAogCgkvLyBwdXNoIGFsbCB0aGUgcHJpbWVzIGludG8gdGhlIHZlY3RvciBhbnMgCgl2ZWN0b3I8bGw+IGFuczsgCglmb3IgKGxsIGkgPSAwOyBpIDwgbjsgaSsrKSAKCQlpZiAocHJpbWVbaV0pIAoJCQlhbnMucHVzaF9iYWNrKGkpOyAKCXJldHVybiBhbnM7IAp9IAoKdmVjdG9yPGxsPiBzaWV2ZVJhbmdlKGxsIGwgLCBsbCByKXsKCXZlY3RvcjxsbD4gcHJpbWVTaWV2ZSA9IHNpZXZlKHIpOwoJbGwgbG93ZXJfYm91bmRfcHJpbWUgPSBsb3dlcl9ib3VuZChhbGwocHJpbWVTaWV2ZSksbCktcHJpbWVTaWV2ZS5iZWdpbigpOwoJcHJpbWVTaWV2ZS5lcmFzZShwcmltZVNpZXZlLmJlZ2luKCkscHJpbWVTaWV2ZS5iZWdpbigpK2xvd2VyX2JvdW5kX3ByaW1lKTsKCXJldHVybiBwcmltZVNpZXZlOwp9CgppbnQgbWFpbigpIHsKCWxsIGwgPTEyOwoJbGwgciA9IDEwMDsKCXZlY3RvcjxsbD5hbnMgPSBzaWV2ZVJhbmdlKGwscik7Cglmb3IoaW50IHg6YW5zKWNvdXQ8PHg8PCIgIjsKCXJldHVybiAwOwp9