首页 > 代码库 > 素数判别算法
素数判别算法
素数筛选法
原理就是当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 }
素数判别算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。