素数筛法打表

原创 2016年05月31日 20:24:07

筛法打素数表是一种高效的打表方法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。就这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。需要注意的是,选取质数的时候,循环只需到sqrt(n)就可以。


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
#define maxn 10000
int a[maxn],isprime[maxn];
int n;
void primetable()
{
    int i,j;
    memset(isprime,1,sizeof(isprime));
    isprime[0]=isprime[1]=0;
   int max=sqrt(maxn*1.0);
    for(i=2; i<=max; i++)
    {
        if(isprime[i])
        {
            for(j=2; j*i<=maxn; j++)
                isprime[i*j]=0;
        }
    }
    n=0;
    for(i=1; i<maxn; i++)
        if(isprime[i])
            a[n++]=i;
}
int main()
{
    primetable();
    for(int i=0; i<n; i++)
        printf("%4d ",a[i]);
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

素数筛法

数论 素数 筛法
  • Once_HNU
  • Once_HNU
  • 2011年04月05日 00:03
  • 17758

算法之素数筛法

方法一 //判断是否是一个素数 int IsPrime(int a){ //0,1,负数都是非素数 if(a ...
  • SJF0115
  • SJF0115
  • 2013年03月20日 09:08
  • 7456

O(N)的素数筛选法和欧拉函数

首先,在谈到素数筛选法时,先涉及几个小知识点. 1.一个数是否为质数的判定. 质数,只有1和其本身才是其约数,所以我们判定一个数是否为质数,只需要判定2~(N - 1)中是否存在其约数即可,此种方...

改进的筛素数法

最简单的筛素数法方法就是从2开始,将所以2的倍数去掉,然后从3开始,将3的倍数去掉。根据这样很容易写出代码,下面代码就是是筛素数法得到100以内的素数并保存到primes[]数组中。//by More...

素数筛选法 (求1~n的素数)

具体方法就不阐述了,百度一下就能找到,
  • yzj577
  • yzj577
  • 2014年07月26日 18:03
  • 3698

一般筛法求素数+快速线性筛法求素数

TAG 素数  数论 素数总是一个比较常涉及到的内容,掌握求素数的方法是一项基本功。 基本原则就是题目如果只需要判断少量数字是否为素数,直接枚举因子2 。。N^(0.5) ,看看能否整除N...
  • Dinosoft
  • Dinosoft
  • 2010年08月22日 01:28
  • 34974

【筛素数表证明】【O[n]】

void get_prime() { int cnt = 0; for (int i = 2; i < N; i++) { if (!tag[i]) p[...

快速求素数表——埃氏筛法与欧拉筛法

快速求素数表——埃氏筛法与欧拉筛法快速求素数表埃氏筛法与欧拉筛法 埃氏筛法 埃氏筛法原理 埃氏筛法时间复杂度 埃氏筛法代码求出1000000以内的素数并且输出n个素数 欧拉筛法 欧拉筛法原理 欧拉筛法...

筛法打印质数表【附:100000以内质数表】

发现在做ACM题目的时候经常会用到一些质数,因此使用埃拉托斯特尼筛法打印质数表以保存之。 埃氏筛或爱氏筛,是一种公元前250年由古希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。 给出要筛数...

筛法素数打表方法

埃拉托斯特尼筛法,是一种公元前250年由古希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。 给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是...
  • kun768
  • kun768
  • 2014年11月19日 00:19
  • 425
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:素数筛法打表
举报原因:
原因补充:

(最多只允许输入30个字)