【noip】【C++】关于素数或质数的两种常用判断算法;
2017-08-03 22:24
309 查看
【noip】【C++】关于素数或质数的两种常用判断算法;
1.第一种很简单,根据素数的定义来判断【维基百科是如此对素数进行定义:一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除】重要算法思想就是将待判数n分别除以 k[2,n-1],若发现 n%k!=0时,则可以判定该待判数n为真素数(质数);
c++算法实现:
bool(int n)//n为待判定数,如果该判定数为质数,则返回真,否则返回假。 { for(int k=2;k<=n-1;k++) { if(n%k==0) { return false; } } return true; }//根据素数定义进行判断,复杂度为O(n);【应该是,复杂度我也不太会算】
2.第二种则根据(质数筛选定理):当待判数n不能够被不大于根号n的任何质数整除,则n是一个质数;
这个算法相对于上一个会减少很多不必要的判断。
“`
include
include // for sqrt()
define MAX 100
using namespace std;int main() {
cout << 2 << endl; //2是质数
for (int i = 3; i <= MAX; i += 2) { //偶数不是质数,步长可以加大
float temp = static_cast(i);
int mid = static_cast(sqrt(temp));
int j;
for (j = 3; j <= mid; j += 2)//i是奇数,当然不能被偶数整除,步长也可以加大。
if (i % j == 0)
break;
if (j > mid) cout << i << endl; } return 0;
}
“
相关文章推荐
- C++常见的质数判断算法
- 判断一个数是否为质数/素数——从普通判断算法到高效判断算法思路
- 素数判断的两种常用办法
- 常用的算法:求闰年,判断素数,分解质因数,完数,水仙花数等
- [noip][c/c++]关于字符串中前导0和后导0的处理算法
- 素数/质数的判断(C++)
- 判断一个数是否是素数的两种算法
- 常用算法(C#): 判断素数的算法
- 判断一个数是否为质数/素数——从普通判断算法到高效判断算法思路
- c、c++关于质数||素数的求法
- 素数判断算法 - 拉宾-米勒测试定理(c++实现)
- 算法:从键盘循环输入一个整数,判断是否是素数\质数
- 关于素数判断算法优化方法的讨论
- 判断一个数是否为质数/素数——从普通判断算法到高效判断算法思路
- 判断一个正整数是否为质数的算法
- 常用的数论算法(C++描述)
- 判断两条线段相交的两种算法
- 标准模板库 STL-2 编程题#6: priority queue(Coursera 程序设计与算法 专项课程3;容器中自定义排序顺序 MyCompare,判断质数)
- C++检测数字是否为素数(质数)
- 关于C++中如何判断文件、目录存在的若干方法