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. const int sorgu_sayisi = 1e7;
  22. long long cevaplarin_toplami = 0; // Derleyici optimizasyonlarının önüne geçmek için.
  23. mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
  24. for (int ornek = 0; ornek < sorgu_sayisi; ornek++) {
  25. int l = uniform_int_distribution<int>(1, n)(rng);
  26. int r = uniform_int_distribution<int>(l, n)(rng);
  27. cevaplarin_toplami += araliktaki_asal_sayisi(l, r);
  28. }
  29. cout << cevaplarin_toplami << "\n";
  30. }
Success #stdin #stdout 2.85s 405956KB
stdin
Standard input is empty
stdout
14132522967377