Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define endl "\n"
- #define sp " "
- #define ll long long
- using namespace std;
- const int MAX = 1000000;
- bool sieve[MAX + 5];
- void createSieve() {
- for(int i=2; i*i<=MAX; i++) {
- if(sieve[i] == 0) {
- for(int j=i*i; j<=MAX; j+=i) {
- sieve[j] = 1;
- }
- }
- }
- }
- vector<int> generatePrime(int n) {
- vector<int> primes;
- for(int i=2; i<=n; i++) {
- if(sieve[i]==0) primes.push_back(i);
- }
- return primes;
- }
- int main() {
- createSieve();
- int t, L, R;
- cin >> t;
- while(t--) {
- cin >> L >> R;
- int dummy[R-L+1];
- memset(dummy, 0, sizeof(dummy));
- if(L==1) dummy[0] = 1;
- vector<int> primes = generatePrime(sqrt(R));
- for(auto pr: primes) {
- int firstMultiple = (L/pr) * pr;
- if(firstMultiple < L) firstMultiple += pr;
- for(int i=max(firstMultiple, pr*pr); i<=R; i+=pr) {
- dummy[i-L] = 1;
- }
- }
- for(int i=L; i<=R; i++) {
- if(dummy[i-L]==0) cout << i << endl;
- }
- cout << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement