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> asal_sayisi(n + 1);
  8. for (int i = 2; i <= n; i++) {
  9. asal_sayisi[i] = asal_sayisi[i - 1] + asal_mi[i];
  10. if (!asal_mi[i])
  11. continue;
  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 asal_sayisi[r] - asal_sayisi[l - 1];
  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.76s 405872KB
stdin
Standard input is empty
stdout
[1, 100000000] araligindaki asal sayisi: 5761455
[66276626, 91492887] araligindaki asal sayisi: 1387051
[25591459, 77504119] araligindaki asal sayisi: 2931722
[59025092, 82024796] araligindaki asal sayisi: 1273097
[83396152, 98852422] araligindaki asal sayisi: 843300
[45417396, 84266839] araligindaki asal sayisi: 2161677