HDU 2136 Largest prime factor

题目大意:求出比给出数小的互质的质数个数。

题解:直接用筛法求素数,稍微改编一下,将原先的布尔数组变为数组用来记录信息就可以了。

注意点:大的数组定义要放在程序的开头,不要放在main里面,不然会栈溢出。

#include <cstdio>
#define max 1000000
int prim[max]={0};
int main()
{
    int n;
    int cnt=1;
    for(int i=2; i<max; ++i)
    {
        if(prim[i]) continue;
        for(int j=i; j<max; j+=i)
        prim[j]=cnt;
        cnt++;
    }
    while(scanf("%d",&n)!=EOF) printf("%d\n",prim[n]);
    return 0;
}

 

posted @ 2013-12-27 15:48  forever97  阅读(107)  评论(0编辑  收藏  举报