您的位置:首页 > 编程语言 > Java开发

LeetCode中Count Primes的java实现

2015-05-22 10:40 375 查看
题目如下:

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
;

         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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java leetcode