Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define size 100000
- int primes[size];
- int countv;
- void sieveSimple(int n){
- countv = 0;
- if(n >= 2)
- {
- bool mark[n + 1];
- for (int i = 3; i*i <= n; i+=2)
- {
- if (mark[i] == false)
- {
- for (int j = i*i; j <= n; j+= i + i)
- {
- mark[j] = true;
- }
- }
- }
- for (int i = 2; i <= n; ++i)
- {
- if (i == 2)
- primes[countv++] = i;
- else if (i%2 != 0 && mark[i] == false)
- primes[countv++] = i;
- }
- }
- }
- int main()
- {
- int t;
- scanf("%d", &t);
- while (t--)
- {
- bool marked[size + 1];
- int m, n;
- scanf("%d %d", &m, &n);
- sieveSimple(sqrt(n));
- for (int i = 0; i < countv; ++i)
- {
- int a = primes[i];
- int b = m/a;
- b *= a;
- for (int j = b; j <= n; j+=a)
- {
- if (j < m)
- continue;
- marked[j - m] = true;
- }
- }
- for (int i = 0; i < countv; ++i)
- {
- if (primes[i] >= m && primes[i] <= n)
- printf("%d\n", primes[i]);
- }
- for (int i = 0; i < n - m + 1; ++i)
- {
- if (marked[i] == false && (i + m) != 1)
- printf("%d\n", i + m);
- }
- if (t != 0) printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement