快速判断一个数字是否是素数
2015-08-16 11:25
211 查看
//num可以达到10^9数量级甚至更大,比一般的判断方法快很多
</pre><pre name="code" class="cpp">bool isPrimeNum(int num) { if (num <= 2) { return num == 2; } if (num % 2 == 0) { return false; } int iSqrt = sqrt(num); for (int i = 3; i <= iSqrt; i+=2) { if (num % i == 0) { return false; } } return true; }
PS:
求 (n−1)! mod n
如果n为合数,显然答案为0.
如果n为素数,那么由威尔逊定理可得答案为 n−1
注意有个trick为 n = 4
相关文章推荐
- BGP相关资料
- xcode 各种项目设置
- 二叉搜索树的后序遍历序列(算法)
- POJ 2559 Largest Rectangle in a Histogram
- CentOS yum 源的配置与使用
- 关情纸尾-----UIKit基础-超级猜图
- 从输入整数问题
- arm中断控制led
- LayoutInflater.inflate源码分析
- Andriod Studio科普文章——3.大约gradle常见问题插头
- USACO:2.2.2 Subset Sums 集合和
- 取石子游戏
- for循环
- struts2学习笔记(十一)文件上传
- 如何设置eclipse的自动补齐功能
- 数据结构读书笔记1
- IOS拉伸之底盖设置
- 关于Cocos2d-x的CC_SYNTHESIZE 和 CC_SYNTHESIZE_READONLY 宏的作用
- Android ADB工具-管理设备/取设备硬件信息(一)
- POJ 2001 Shortest Prefixes(字典树)