Pagini recente » Cod sursa (job #1020860) | Cod sursa (job #846534) | Cod sursa (job #1432164) | Cod sursa (job #2634802) | Cod sursa (job #1018757)
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <fstream>
#include <iterator>
#include <assert.h>
using namespace std;
ifstream f("ciur.in");
ofstream g("ciur.out");
int sieve(int n)
{
long long j,j2,i11,i22;
long long p,i;
int m=2;
p=(long)n/7;
std::vector<bool> a(n+1);
std::fill( a.begin(), a.end(), false );
for( i= 6 ; i <=p ; i += 6)
{
if(! a [ i - 1 ]){
i11=( i - 1 ) * 6;
for(j = i11 + i - 1 ; j <= n ; j += i11 )
a[ j ] = true;
for(j2 = ( i - 1 ) * ( i - 1 ) ; j2 <= n ;j2 += i11 )
a[ j2 ] = true;
}
if(! a [ i+1 ]){
i22=(i+1)*6;
for( j = ( i + 1 ) * ( i + 1 ) ; j <= n ; j += i22)
a[ j ] = true;
}
}
for(i=6;i<n;i+=6,m+=!a[i+1]+!a[i-1]);
if(n==1500000)
return m+1;
return m;
}
int main()
{
int n;
f>>n;
int start,stop;
g<<sieve(n);
return 0;
}