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

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

注意点:大的数组定义要放在程序的开头,不要放在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;
}

 

相关文章:

  • 2021-08-10
  • 2021-12-04
  • 2022-01-03
  • 2022-12-23
  • 2021-12-28
  • 2021-05-01
  • 2022-03-05
  • 2022-12-23
猜你喜欢
  • 2021-11-04
  • 2021-12-09
  • 2021-06-12
  • 2021-11-20
  • 2022-12-23
相关资源
相似解决方案