LeetCode 204 Count Primes题解

来源:互联网 发布:java运行库安装 编辑:程序博客网 时间:2024/06/18 05:36

题目地址:https://leetcode.com/problems/count-primes/

题目:

Description:

Count the number of prime numbers less than a non-negative number, n.

计算比n小的非负数中素数的个数。


算法设计:

素数的特点:一个素数只能被自己和1整除。就是说素数不能被比它小的整数整除,因此,如果数值n是素数的话,那么比n小的2的倍数,3的倍数,...,n-1的整数倍数,都不是素数。我们可以借助这个特点来找到排除掉哪些不是素数。


Java代码实现:

/**素数不能被比它小的整数整除, 建一个boolean 数组, 从2开始, 把其倍数小于N的都删掉.*注意 inner loop从i开始, 比i小的会在以前就被check过.*/public class Solution {    public int countPrimes(int n)     {        if(n<=2)            return 0;        else        {            int num=0;            boolean[] flag=new boolean[n];            for(int i=2;i<n;i++)            {                if(flag[i]==false)                {                       num++;                    int count=1;                    while(count*i<n)                    {                           flag[count*i]=true;                        count++;                    }                }            }            for(int i=2;i<n;i++)            {                if(flag[i]==false)                {                    num++;                }            }            return num;        }     }}


0 0
原创粉丝点击