筛法求素数

导读:本篇文章讲解 筛法求素数,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

在OJ刷题经常会遇到的一个问题就是求素数,什么判断素数,判断某个区间有多少个素数。。变着花样考察素数判断,对于要求不是很严格的,我们可以使用素数的定义进行判断,即只能被1和它自身整除的数就是素数了,但是如果过范围比较大,这样就很不实用了,所以引入了筛法求素数,而对于这种方法我们又分为一般筛法和快速线性筛法,对于筛法的思想,比如,求解1~100的素数,手首先从1开始看,1不是素数,所以把它 筛 掉,接下来是2,2是素数,所以,所有2的倍数就不是素数了,我们把4,6,8。。等等都筛掉,然后再看3,3是素数,然后把3的倍数都筛掉。。。以此类推,最后会把所有的合数都筛掉,这也就是这个名字的由来了
一般筛法:

void prime(){
  int p[100];
  memset(p,0,sizeof(p));
  for(int i=2;i<=sqrt(100);i++){
    if(!p[i]){                     //如果i对应的值是0,那么表示i是素数
        for(int j=2;i*j<100;j++){   //从 2*i ,3*i ...标志为1
            p[i*j]=1;
        }
    }
  }
  for(int i=2;i<100;i++){
    if(!p[i])                    //值为0,则下标数值为素数
        cout<<i<<" ";
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/116847.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!