首页 > 其他 > 详细

埃氏筛法

时间:2019-12-05 20:50:05      阅读:81      评论:0      收藏:0      [点我收藏+]
要得到自然数n以内的全部素数,必须把不大于
技术分享图片
的所有素数的倍数剔除,剩下的就是素数。 
给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去......。
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 using namespace std;
 5 int main(){
 6     int n=100,t;
 7     bool a[105];
 8     for(int i=0;i<=n;i++){
 9         a[i]=true;
10     }
11     a[1]=false;
12     for(int i=2;i<=sqrt(n);i++){
13         if(a[i]){
14             for(int j=2;j<=n/i;j++){
15                 a[i*j]=false;
16             }
17         }
18     }
19     t=0;
20     for(int i=2;i<=n;i++){
21         if(a[i]){
22             printf("%5d",i);
23             t++;
24             if(t%5==0){
25                 printf("\n");
26             }
27         }
28     }
29     return 0;
30 }

 

 

 
 

埃氏筛法

原文:https://www.cnblogs.com/bjt1015/p/11991594.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!