Pagini recente » Cod sursa (job #519992) | Cod sursa (job #605171) | Cod sursa (job #735256) | Cod sursa (job #1455579) | Cod sursa (job #2702166)
#include <bits/stdc++.h>
using namespace std;
ifstream f("ciur.in");
ofstream g("ciur.out");
int n;
bool sieve[2000009];
int main()
{
f >> n;
for (int x = 1; x * x <= n; x++)
for (int y = 1; y * y <= n; y++)
{
int r = 4 * x * x + y * y;
if (r < n && (r % 12 == 1 || r % 12 == 5))
sieve[r] ^= 1;
r -= x * x;
if (r < n && r % 12 == 7)
sieve[r] ^= 1;
r -= 2 * y * y;
if (x > y && r < n && r % 12 == 11)
sieve[r] ^= 1;
}
int rez = 0;
sieve[3] = 1;
for (int i = 5; i * i <= n; i++)
if (sieve[i])
for (int j = i * i; j <= n; j += i * i)
sieve[j] = 0;
for (int i = 3; i <= n; i += 2)
rez += sieve[i];
g << rez + (2 <= n);
return 0;
}