Pagini recente » Cod sursa (job #1949503) | Cod sursa (job #1770917) | Cod sursa (job #719746) | Cod sursa (job #299673)
Cod sursa(job #299673)
#include <cstdio>
#include <bitset>
#define maxN 2000100
using namespace std;
bitset <maxN> prim;
int N;
int main () {
int i, x, y, now, k;
freopen("ciur.in", "r", stdin);
freopen("ciur.out", "w", stdout);
scanf("%d", &N);
for (x = 1; x * x <= N; ++ x)
for (y = 1; y * y <= N; ++ y) {
i = 4 * x * x + y * y;
if (i <= N && (i % 12 == 1 || i % 12 == 5))
prim[i] = prim[i] ^ 1;
i = 3 * x * x + y * y;
if (i <= N && (i % 12 == 7))
prim[i] = prim[i] ^ 1;
i = 3 * x * x - y * y;
if (x > y && i <= N && i % 12 == 11)
prim[i] = prim[i] ^ 1;
}
for (i = 5; i * i <= N; ++ i)
if (prim[i]) {
now = i * i;
for (k = now; k <= N; k += now)
prim[k] = 0;
}
int Sol = 0; prim[4] = 0; prim[2] = prim[3] = 1;
for (i = 2; i <= N; ++ i)
if (prim[i])
++ Sol;
printf("%d\n", Sol);
}