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. 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 7.27s 48436KB
stdin
Standard input is empty
stdout
14128757130035