本文主要是介绍LeetCode中Count Primes的java实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目如下:
Description:
Count the number of prime numbers less than a non-negative number, n.
一开始用的方法入下,结果运算时间太大
public class Solution {public int countPrimes(int n) {
boolean mark = true;
int count=0;
for(int i=2;i<n;i++)
{
for(int m=2; m<=Math.sqrt(i);m++ )
{
mark = true;
if(i%m==0)
{
mark =false;
break;
}
}
if(mark)
{
count++;
}
}
return count;
}
}
后来改成如下写法,通过
public class Solution {
public int countPrimes1(int n)
{
boolean bool[] = new boolean[n];
if (n <= 2) return 0;
int counter = n-2;
int j = 0;
for (int i = 2; i <= Math.floor(Math.sqrt(n)); i++) {
j = i + i;
if (!bool[i])
{
while (j < n) {
if (!bool[j]) {
bool[j] = true;
counter --;
}
j = j + i;
}
}
}
return counter;
}
这篇关于LeetCode中Count Primes的java实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!