Count Primes(LeetCode)
来源:互联网 发布:空中客车a380数据 编辑:程序博客网 时间:2024/05/22 00:28
Description:
Count the number of prime numbers less than a non-negative number, n.
即求小于给定的正整数n的所有素数的个数
方法一:普通求解法,即从2开始判断每一个小于你的正整数k是否是素数,用k依次对2到根号k之间的所有整数取余,如果余数为0则k为非素数,否则为素数
public int countPrimes(int n) {
// 常规解法,一个个的判断,执行效率低,超时
if(n < 3)
return 0;
int count = 0;
int m = 2;
while(m < n)
{
int k = 2;
int sqrt = (int) Math.sqrt(n);
while(k <= sqrt)
{
if(m % k == 0)
break;
k++;
}
if(k == sqrt + 1)
count++;
m++;
}
return count;
}
方法二:以乘法替代除法,依次将2到根号n之间的整数的所有倍数(在小于n的范围内)标记为非素数,剩余的没有被标记的数就全部都是素数了
public int countPrimes(int n) {
// 新建一个同样大小的数组,记录其是否是素数
// 注意,2是素数
boolean[] results = new boolean[n];
for(int i = 2; i * i < n; i++) {
// 将素数的倍数全部标记为非素数
if(!results[i]) {
for(int j = i; i * j < n; j++) {
results[i * j] = true;
}
}
}
int count = 0;
for(int i = 2; i < n; i++) {
if(results[i] == false)
count++;
}
return count;
}
方法二没有除法运算,因而执行速度较方法一要快很多
- LeetCode 204 - Count Primes
- [LeetCode] Count Primes
- LeetCode #Count Primes#
- 【leetcode】Count Primes
- LeetCode 204-Count Primes
- [LeetCode] Count Primes
- [LeetCode 204] Count Primes
- [LeetCode]Count Primes
- leetcode 204: Count Primes
- Count Primes Leetcode JAVA
- LeetCode OJ Count Primes
- [leetcode]Count Primes
- leetcode--Count Primes
- [LeetCode]Count Primes
- Count Primes LeetCode
- LeetCode (36) Count Primes
- LeetCode 204:Count Primes
- LeetCode:Count Primes
- hihoCoder - 1066 - 无间道之并查集
- SSH 通过秘钥验证方式访问管理服务器 原理和配置方法
- UVa673 Parentheses Balance
- HDU 2167 状压DP
- 网站移植,从window的WAMP 转移到线上linux的LNMP
- Count Primes(LeetCode)
- 广告过滤算法实现及优化
- 共轭梯度法(conjugate gradient method)
- 详解Java虚拟机类加载
- 企业移动应用平台:走进SAP SUP的世界
- C/C++中作用域详解
- Cached VS Buffers
- jiffies 时间转换
- MySQL-终端基本操作