算法学习之素数
来源:互联网 发布:淘宝认证考试 编辑:程序博客网 时间:2024/04/30 17:21
判断是否是素数,素数又称为质数,是大于1且除了本身没有因数的自然数,如2,3,5,7,11等
算法1:
bool IsPrime(int n)
{
int divisors,i;
divisors = 0;
for(int i=1;i<=n;i++)
{
if(n % i == 0) divisors++;
}
return (divisors == 2);
}
如果测试的数字是100000,那么次算法遍历的次数就比较多,效率低下,这时候就需要考虑另外一种算法
分析:
步骤1,如果能被2整除肯定不是素数
步骤2,如果不能被2整除则判断是否能被3,5,7等整除
步骤3,考虑到被测试数n如果能被d1整除,那么假设n=d1*d2,如果d1=d2,那么d1=sqrt(n);如果d1大于sqrt(n),那么d2必然小于d1,所以遍历的最大上限数只需到sqrt(n)
步骤4,考虑到计算机sqrt(16)的结果要小于4,大概是3.99999999,所以sqrt(n)要加上1
算法2:
bool IsPrime(int n)
{
int i,limit;
if(n<=1)return (FALSE);
if(n==2) return (TRUE);
if(n%2==0) return (FALSE);
limit = sqrt(n)+1;
for(i = 3;i<limit;i+2)
{
if(n%i==0) return (FALSE);
}
return (TRUE);
}
0 0
- 算法学习之素数
- 算法学习之素数环问题
- 算法学习之旅,初级篇(13)--素数判定
- C语言 之 素数算法
- 算法之素数筛法
- 随机算法之素数判定
- 趣味算法之趣味素数
- 【算法之高效求素数】浅析求素数算法
- 算法学习之旅,初级篇(14)--素数的个数
- 一步一步写算法(之素数问题)
- 素数算法的优化之路
- 119_素数算法之 埃氏筛
- 回溯算法之素数环问题
- 简单算法之素数筛法
- 华为oj之素数伴侣---匈牙利算法
- 华为OJ之素数伴侣-匈牙利算法
- java之简单的判断素数算法
- 100经典算法之(二)---素数
- 广播机制
- 测试URL接口的Thread
- 【caffe-Windows】训练自己数据——数据集格式转换
- Python调用已训练好的caffe模型进行分类
- Android设备连接Unity Profiler性能分析器
- 算法学习之素数
- redis的linux下的单机安装、集群安装及测试
- 写操作系统只能用汇编和C语言吗
- git本地仓库连接多远程
- 12.【链表】Linked List Cycle--Accepted code
- 为什么在6plus上打印的屏幕高度是6的高度
- cookie&session
- 为什么使用python
- [学习资源]