埃氏筛法

要得到自然数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 }

 

 

 
 
posted @ 2019-12-05 20:11  难书  阅读(404)  评论(0编辑  收藏  举报