zoukankan      html  css  js  c++  java
  • 素数筛选法

    素数筛选法

    素数(又称质数):指在大于一的自然数中,只能被1和它自身整除的自然数;

    素数筛选法是指一种非常规的素数判定方法,比较高效率;

    原理:任何数的整数倍必定不是素数,大于二的偶数必定不是素数。

    我们以找出100以内的素数为例,利用原理,我们可以首先排除偶数是素数,然后进一步判断奇数

    实现将偶数标记为0,素数标记为1;(也可以用一个bool数组将偶数标记为false,奇数标记为true)

    下面是全部代码

    #include <iostream>
    #include <cmath>
    #define MAX 100 
    using namespace std;
    
    int main()
    {
                //设置标记,将偶数标记为0 
                int prime[MAX+1];
                for(int i=1;i<=MAX;i++)
                {
                    if(i%2==0)
                    {
                        prime[i]=0;
                    }
                    else prime[i]=1;
                }
                
                for(int i=3;i<=sqrt(MAX);i++)
                {
                    if(prime[i]==1)
                    {
                        for(int j=i+i;j<=MAX;j=j+i)
                        {
                                prime[j]=0;
                        }
                    }
                }        
                cout<<"2"<<" ";
                for(int i=3;i<=MAX;i++)
                {
                    if(prime[i]==1)
                    cout<<i<<" ";
                }
        return 0;    
    } 

     

    每一篇博客,不为别的,证明我的成长。每一次发文,不为别的,证明我严阵以待。蜗牛爬得很慢,却终有一日登上参天大树。因为它热爱。
  • 相关阅读:
    可惜CodeSmith不直接支持Oracle数据库对象...
    Windows Vista
    关于Web Service ...
    他赚了多少钱?
    关于CodeSmith中模板的属性编辑...
    关于Session超时...
    奇怪的CheckBoxList...
    Devdays 2006 China | 微软开发者日
    第二阶段冲刺第一次会议
    冲刺阶段第一天
  • 原文地址:https://www.cnblogs.com/agui521/p/6915489.html
Copyright © 2011-2022 走看看