fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3.  
  4. using namespace std;
  5. const int N = 1e6 + 7;
  6.  
  7. int n;
  8. int a[N];
  9. bool prime[N];
  10.  
  11. void sieve(){
  12. memset(prime, true, sizeof(prime));
  13. prime[0] = prime[1] = 0;
  14. for (int i = 2; i * i < N; i++) {
  15. if (prime[i]) {
  16. for (int j = i * i; j < N; j += i) {
  17. prime[j] = false;
  18. }
  19. }
  20. }
  21. }
  22.  
  23. void sub1() {
  24. int ans = 0;
  25. for (int i = 1; i <= n; i++) {
  26. for (int j = 1; j <= i; j++) {
  27. if (i % j == 0 && j != i / j && prime[j] && prime[i / j]) {
  28. ans++;
  29. break;
  30. }
  31. }
  32. }
  33. cout << ans << '\n';
  34. }
  35.  
  36. void sub2() {
  37. int cnt = 0, ans = 0;
  38. for (int i = 1; i < N; i++) if (prime[i]) a[++cnt] = i;
  39. for (int i = 1; i <= cnt && a[i] <= n; i++) {
  40. for (int j = i + 1; j <= cnt && 1ll * a[i] * a[j] <= n; j++) {
  41. ans++;
  42. }
  43. }
  44. cout << ans << '\n';
  45. }
  46.  
  47. signed main() {
  48. ios_base::sync_with_stdio(0);
  49. cin.tie(0); cout.tie(0);
  50.  
  51. freopen("TICHSO.inp", "r", stdin);
  52. freopen("TICHSO.out", "w", stdout);
  53.  
  54. cin >> n;
  55. sieve();
  56. if (n <= 1000) sub1();
  57. else sub2();
  58. return 0;
  59. }
Success #stdin #stdout 0.01s 6444KB
stdin
Standard input is empty
stdout
Standard output is empty