Description
问
1
~
Input
一个正整数 n(1≤n≤3000)
Output
输出
1
~
Sample Input
10
Sample Output
2
Solution
简单题,暴力判即可
Code
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
const int INF=0x3f3f3f3f,maxn=3005;
int num[maxn];
int check(int n)
{
int cnt=0;
for(int i=2;i*i<=n;i++)
if(n%i==0)
{
cnt++;
while(n%i==0)n/=i;
}
if(n>1)cnt++;
if(cnt==2)return 1;
return 0;
}
void init(int n=3000)
{
for(int i=1;i<=3000;i++)
{
num[i]=num[i-1];
if(check(i))num[i]++;
}
}
int main()
{
init();
int n;
while(~scanf("%d",&n))printf("%d\n",num[n]);
return 0;
}