fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. const int n = 1e8;
  6. vector<bool> asal_mi(n + 1, 1);
  7. vector<int> asallar;
  8. for (int i = 2; i <= n; i++) {
  9. if (!asal_mi[i])
  10. continue;
  11. asallar.push_back(i);
  12. for (int k = 2 * i; k <= n; k += i)
  13. asal_mi[k] = false;
  14. }
  15.  
  16. auto araliktaki_asal_sayisi = [&](int l, int r) {
  17. l = max(l, 1);
  18. return upper_bound(asallar.begin(), asallar.end(), r) - lower_bound(asallar.begin(), asallar.end(), l);
  19. };
  20.  
  21. cout << "[1, " << n << "] araligindaki asal sayisi: " << araliktaki_asal_sayisi(1, n) << "\n";
  22.  
  23. // https://c...content-available-to-author-only...s.com/blog/entry/61587
  24. mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
  25. for (int ornek = 0; ornek < 5; ornek++) {
  26. int l = uniform_int_distribution<int>(1, n)(rng);
  27. int r = uniform_int_distribution<int>(l, n)(rng);
  28. cout << "[" << l << ", " << r << "] araligindaki asal sayisi: " << araliktaki_asal_sayisi(l, r) << "\n";
  29. }
  30. }
Success #stdin #stdout 1.58s 49628KB
stdin
Standard input is empty
stdout
[1, 100000000] araligindaki asal sayisi: 5761455
[59063203, 85872181] araligindaki asal sayisi: 1481609
[5368844, 86446152] araligindaki asal sayisi: 4650544
[33019723, 80252939] araligindaki asal sayisi: 2650467
[62921865, 77346713] araligindaki asal sayisi: 798648
[60495598, 72339556] araligindaki asal sayisi: 657797