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;

}

 

你可能感兴趣的:(Prim)