赞
踩
一类问题: 判定一个整数n(n>1)是否为素数。
算法1:
直接根据素数的定义枚举i
从2到(n−1),如果n%i==0n为合数。
时间复杂度:O(n)
**
bool is_prime(int n) {
int i;
for(i = 2; i < n; i++)
if(n % i == 0) return false;
return true;
}
**
算法2:
大部分人都知道的比较快的方法:判断从2到sqrt(n)是否存在其约数,
时间复杂度O(sqrt(n))
bool is_prime(int n) {
int i;
for(i = 2; i * i <= n; i++)
if(n % i == 0) return false;
return true;
算法3:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。