Pagini recente » Cod sursa (job #1810009) | Cod sursa (job #593050) | Cod sursa (job #708543) | Cod sursa (job #2754816) | Cod sursa (job #299670)
Cod sursa(job #299670)
#include <stdio.h>
#define maxN 2000100
char prim[maxN];
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);
}