C++求素数
2015-05-21 12:10
176 查看
#include <iostream> #include <string> #include <stdio.h> #include <time.h> using namespace std; //统计小于n的素数个数 int prime(int n) { //记录某数是否访问 bool *v = new bool ; //保存素数 int *p = new int ; int i, j, res = 2; if (n < 3) return 0; if (n == 3) return 1; if (n == 4 || n == 5) return 2; for (i = 0; i < n; i++) v[i] = false; for (i = 1;; i++) { //只需判断6n-1和6n+1 if (6 * i - 1 >= n) break; if (v[6 * i - 1] == false) p[res++] = 6 * i - 1; for (j = 2; j < res && (6 * i - 1) * p[j] < n; j++) { v[(6 * i - 1) * p[j]] = true; if ((6 * i - 1) % p[j] == 0) break; } if (6 * i + 1 >= n) break; if (v[6 * i + 1] == false) p[res++] = 6 * i + 1; for (j = 2; j < res && (6 * i + 1) * p[j] < n; j++) { v[(6 * i + 1) * p[j]] = true; if ((6 * i + 1) % p[j] == 0) break; } } delete []v; delete []p; return res; } int main() { //计算运行时间 clock_t s, e; s = clock(); int n = prime(9973); e = clock(); cout << n << " " << 1.0 * (e - s) / CLOCKS_PER_SEC << endl; return 0; }
相关文章推荐
- 【C++】输出比输入数值小的所有素数(数据结构实验1)
- c++第7次实验-素数和回文
- C++第7次实验-项目1:素数和回文
- C++第七次实验——素数和回文
- 获取小于N的素数 优化筛选法的C++实现
- c/c++ 算法之 输出1~1000之间的素数
- 【C++】输出比输入数值小的所有素数(数据结构实验2)
- 1137C/C++经典程序训练7---求某个范围内的所有素数
- C/C++ | 31-29 求1000!的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3)
- C++实验7—数组素数排序
- 4.C/C++练习7---求某个范围内的所有素数
- 打印100以内的素数(质数)----C++实现、python实现
- C++ 求素数
- C/C++练习7---求某个范围内的所有素数
- 求素数 C++
- 学习C/C++语言:素数判断
- C/C++练习7---求某个范围内的所有素数
- C++ / Java 输出a和b之间的素数
- c++ 依次存放在指定范围内求出的所有素数
- 筛选法查找1000以内的素数c++代码实例及运行结果