线性筛法求质数

	const int N=10010;
	int prime[N];
	bool v[N];	
   void get_primes(int n)
	{
		  memset(v,0,sizeof(v));
		 m=0;
		for(int i=2;i<n;i++)//循环遍历2~n的质数
		{
		if(!v[i]){v[i]=i,prime[m++]=i;}//如果没有访问过,就是质数
			for(int j=0;i*prime[j]<=n;j++)//把质数的倍数都变为访问了的
			{
			 v[i*prime[j]]=true;
			 if(i*prime[j]==0)break;//这个质数的倍数超过了n就退出
			}
         }
		for(int i=1;i<=m;i++)
		printf("%d %d",prime[i]);//输出
	}
posted @ 2020-04-22 15:42  arbor_one  阅读(186)  评论(0)    收藏  举报