P3912 素数个数
题目描述
求 1,2,⋯ ,�1,2,⋯,N 中素数的个数。
输入格式
一行一个整数 �N。
输出格式
一行一个整数,表示素数的个数。
输入输出样例
输入 #1复制
10
输出 #1复制
4
说明/提示
对于 40%40% 的数据,1≤�≤1061≤N≤106。
对于 80%80% 的数据,1≤�≤1071≤N≤107。
对于 100%100% 的数据,1≤�≤1081≤N≤108。
代码如下:
#include<iostream>
#include<cmath>
using namespace std;
int N,sum,n;
bool a[100000000];
int main()
{
cin>>N;
if(N<2){cout<<"0";return 0;}
sum=N;
sum-=N/2-1;
a[1]=true;
for(register int i=3;i<=sqrt(N);i+=2)
{
if (a[i]==false)
{
for(register int j=i*2;j<=N;j+=i)
{
if (a[j]==false&&j%2!=0)
{
sum--;
}
a[j]=true;
}
}
}
cout<<sum-1;
return 0;
}