• 筛素数


    1. // 1:这是最原始的筛法,还有待优化   
    2. #define Max 1000000  
    3. bool prime[Max];  
    4. void IsPrime(){  
    5.      prime[0]=prime[1]=0;prime[2]=1;  
    6. for(int i=3;i<max;i++)  
    7.         prime[i]=i%2==0?0:1;  
    8. int t=(int)sqrt(Max*1.0);  
    9. for(int i=3;i<=t;i++)  
    10. if(prime[i])  
    11. for(int j=i;j<Max;j+=i)  
    12.             prime[j]=0;  
    13. }  

     

    1. //2:优化后的筛法,手动地模拟原始筛法就可以发现,某个数字可能被不止一次地删去  
    2. //   优化后的筛法就可以避免这种不必要的删去操作   
    3. #define Max 1000000  
    4. bool prime[Max];  
    5. void IsPrime(){  
    6.      prime[0]=prime[1]=0;prime[2]=1;  
    7. for(int i=3;i<max;i++)  
    8.         prime[i]=i%2==0?0:1;  
    9. int t=(int)sqrt(Max*1.0);  
    10. for(int i=3;i<=t;i++)  
    11. if(prime[i])  
    12. for(int j=i*i;j<Max;j+=2*i)//优化   
    13.             prime[j]=0;  
    14. }

     

    1. //与前两种筛法不同,此种筛法中prime[i]=2*i+3(即:我们只存储奇数,偶数肯定不是素数的)   
    2. #define Max 1000000  
    3. bool prime[Max>>1];  
    4. void IsPrime(){  
    5.      memset(prime,true,sizeof(prime));  
    6. int n=Max>>1,m=(int)(sqrt(Max*1.0)/2.0);  
    7. for(int i=0;i<=m;i++)          
    8. if(prime[i])  
    9. for(int j=2*i*i+6*i+3;j<=n;j+=2*i+3)  
    10.             isprime[j]=false;  
    11. }  

     

    只想找一个不会伤害我的人
  • 相关阅读:
    javascript 介绍
    命令提示符(命令行)
    node(1) hello world
    用Vgg16来提取特征
    VGG16学习
    注意力模型
    统计学习方法
    数字图像处理(五)
    数字图像处理(四)
    BN
  • 原文地址:https://www.cnblogs.com/DukeLv/p/7894805.html
Copyright © 2020-2023  润新知