Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- vector <int> primes;
- bool isprime[3000];
- void sieve(int n)
- {
- memset(isprime, true, sizeof(isprime));
- int limit = sqrt(n+1);
- isprime[0] = isprime[1] = false;
- for(int i = 4; i < n; i+=2) isprime[i] = false;
- primes.push_back(2);
- for(int i = 3; i <= n; i+=2){
- if(isprime[i]){
- primes.push_back(i);
- if(i <= limit){
- for(int j = i*i; j <= n; j += i*2){
- isprime[j] = false;
- }
- }
- }
- }
- }
- int main()
- {
- int n, c, p = 0;
- cin >> n;
- if(n < 6) cout << 0 << endl;
- else if(n >= 6 && n <= 10) cout << 2 << endl;
- else{
- sieve(n);
- for(int i = 11; i <= n; i++)
- {
- c = 0;
- for(int j = 0; j < primes.size(); j++){
- if(i%primes[j] == 0 && primes[j] <= i/2) c++;
- if(c == 2) {
- p++;
- break;
- }
- }
- }
- cout << p+2 << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement