Pagini recente » Cod sursa (job #1279942) | Cod sursa (job #1276953) | Cod sursa (job #652292) | Cod sursa (job #973769) | Cod sursa (job #548948)
Cod sursa(job #548948)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
FILE *f = fopen("ciur.in","r");
FILE *g = fopen("ciur.out","w");
int a,i,k,j,n;
unsigned char *v;
fscanf(f,"%d",&n);
a = sqrt(n);
v = (unsigned char*) calloc(n + 1,sizeof(unsigned char));
for(i = 1; i <= a; i++)
for(j = 1; j <= a; j++){
k = (i << 2) * i + j * j;
if(k <= n && (k % 12 == 1 || k % 12 ==5))
v[k] = (v[k] == 0 ? 1 : 0);
k = 3 * i * i + j * j;
if(k <= n && k % 12 == 7)
v[k] = (v[k] == 0 ? 1 : 0);
k = 3 * i * i - j * j;
if(i > j && k <= n && k % 12 == 11)
v[k] = (v[k] == 0 ? 1 : 0);
}
for(i = 5; i <= a; i++)
if(v[i] == 1){
k = i * i;
for(j = k; j <= n; j += k)
v[j] = 0;
}
v[2] = v[3] = 1;
k = 0;
for(i = 1; i <= n; i++)
if(v[i])
k++;
fprintf(g,"%d",k);
fclose(f);
fclose(g);
return 0;
}