int countPrimes(int n) {
if(n<=2)
return 0;
int *nums=(int*)malloc(sizeof(int)*(n/2));
for(int i=0;i<n/2;i++)
nums[i]=i*2+1;
for(int i=3;i<=sqrt((double)n);i+=2)
for(int j=i*3;j<n;j+=i*2)
nums[j/2]=0;
int count=0;
for(int i=0;i<n/2;i++){
if(nums[i]!=0)
count++;
}
free(nums);
return count;
}
if(n<=2)
return 0;
int *nums=(int*)malloc(sizeof(int)*(n/2));
for(int i=0;i<n/2;i++)
nums[i]=i*2+1;
for(int i=3;i<=sqrt((double)n);i+=2)
for(int j=i*3;j<n;j+=i*2)
nums[j/2]=0;
int count=0;
for(int i=0;i<n/2;i++){
if(nums[i]!=0)
count++;
}
free(nums);
return count;
}