素数筛选法

来源:互联网 发布:今古传奇故事 知乎 编辑:程序博客网 时间:2024/05/17 22:45
#include <cstdlib>#include <iostream>#include <string.h>#include <math.h>using namespace std;const int MAX = 1000000+5;long vis[MAX],primes[MAX];void sieve(long n){     memset(vis,0,sizeof(vis));          int m = (int)sqrt(n + 0.5);//最大到 n的 开方      for(long i = 2; i < m; i++)if(!vis[i])        for(long j = i*i; j < n; j += i)             svis[j] = 1;               }int gen_primes(long n){    sieve(n);    long c = 0;    for(long i = 2; i < n; i++)        if(!vis[i])primes[c++] = i;    return c; }int main(int argc, char *argv[]){    memset(primes,0,sizeof(primes));    gen_primes(100000);    for(long i = 0; primes[i]; i++)printf("%ld ===>%ld\n",i,primes[i]);     system("PAUSE");    return EXIT_SUCCESS;}


用高效的方法筛选小于n的素数

 

 

 

 

0 0
原创粉丝点击