首页 > 代码库 > 素数判别算法

素数判别算法

素数筛选法

原理就是当i是素数的时候,i的所有的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质数的倍数筛掉。算法实现

 1 #include <iostream> 2 #include <math.h> 3 using namespace std; 4  5 int main() 6 { 7     int N = 1000000; 8         //prime用来保存下标i是否是素数 9     bool prime[N+1];10         //初始化,偶数(除了2)都是合数11     for (int i = 0; i < N; i++)12     {13         if (i%2 == 0 && i != 2)14             prime[i] = false;15         else16             prime[i] = true;17     }18 19     for (int i = 3; i <= sqrt(N); i += 2)20     {21                 //若i不是素数,则i的倍数都不是素数22         if (prime[i])23             for (int j = i+i; j <= N; j += i)24                 prime[j] = false;25     }26 27     for (int i = 2; i <= N; i++)28     {29         if (prime[i])30             cout << i << endl;31     }32     33     return 0;34 }

 

素数判别算法