素数快速筛选法

来源:互联网 发布:创玻璃优化软件 编辑:程序博客网 时间:2024/09/21 06:17

预处理素数快速筛选法:

#include <iostream>#include <cmath>#include <cstring>using namespace std;const int maxn = 100001;int a[maxn];int main(){   int primeNum, From, To;   memset(a, 0, sizeof(a)); //初始所有数为素数   a[0] = a[1] = 2;  //0和1既不是素数也不是合数   for(int i=2; i<=maxn; i++){      if(a[i] == 0){         for(int j=i+i; j<=maxn; j+=i)  a[j] = 1; //筛掉所有素数的倍数      }   }   //升序输出任意范围的素数和素数数目   while(cin >> From >> To)   {      primeNum = 0;      for(int i=From; i<=To; i++){         if(a[i] == 0){            if(primeNum) cout << " " << i;            else cout << i;            primeNum++;         }      }      cout << endl << primeNum << endl;      }   return 0;}


原创粉丝点击