Pagini recente » Cod sursa (job #2829279) | Cod sursa (job #1560127) | Cod sursa (job #1254682) | Cod sursa (job #2282640) | Cod sursa (job #1835486)
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
ifstream cin("ciur.in");
ofstream cout("ciur.out");
vector <bool> a;
int n;
void prime()
{
int k,p;
for (int x=1; x*x<=n; x++)
for (int y=1; y*y<=n; y++)
{
p=4*x*x+y*y;
if (p<=n && (p % 12 ==1 || p % 12 ==5)) a[p]=! a[p];
p-=x*x;
if (p<=n && p % 12 == 7) a[p]=!a[p];
p-=2*y*y;
if (x>=y && p<=n && p % 12 == 11) a[p]=!a[p];
}
for (int i=5; i*i<=n; i++)
if (a[i])
{
k=p=i*i;
for (; p<=n; p+=k)
a[p]=false;
}
a[2]=a[3]=true;
}
main()
{
cin >> n;
a.resize(n+1);
prime();
cout << count(a.begin(),a.end(),true);
}