CodeForces 26 A.Almost Prime(数论)

来源:互联网 发布:黑客帝国矩阵革命 编辑:程序博客网 时间:2024/05/20 11:24

Description

1~n中有多少数字只有两个不同的素因子

Input

一个正整数n(1n3000)

Output

输出1~n中只有两个不同的素因子的数字个数

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;}