Pagini recente » Cod sursa (job #1755138) | Monitorul de evaluare | Cod sursa (job #1564872) | Cod sursa (job #2396250) | Cod sursa (job #1808636)
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
vector <bool> a;
int n,c=0;
void ciur()
{
int q,k;
for (int x=1; x*x<=n; x++)
{
for (int y=1; y*y<=n; y++)
{
q=4*x*x+y*y;
if (q<=n && (q % 12 == 1 || q % 12 == 5)) a[q]=(!a[q]);
q-=x*x;
if (q<=n && q % 12 == 7) a[q]=(!a[q]);
q-=2*y*y;
if (q<=n && x>y && q % 12 == 11) a[q]=(!a[q]);
}
}
for (int i=5; i*i<=n; i++)
{
if (a[i])
{
k=i*i; q=k;
while (q<=n)
{
a[q]=false;
q+=k;
}
}
}
a[2]=true;
a[3]=true;
}
main()
{
cin >> n;
a.resize(n+1);
ciur();
for (int i=2; i<=n; i++)
{
if (a[i]) c++;
}
cout << c ;
}