• Count Primes 解答


    Question

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

    Solution 1

    Naive way, to check each number one by one. If a number i is prime, then for x from o to (i - 1), i % x != 0. Time complexity O(n^2).

    Solution 2

    Sieve of Eratosthenes 算法:

    由于一个合数总是可以分解成若干个质数的乘积,那么如果把质数(最初只知道2是质数)的倍数都去掉,那么剩下的就是质数了。
    例如要查找100以内的质数,首先2是质数,把2的倍数去掉;此时3没有被去掉,可认为是质数,所以把3的倍数去掉;再到5,再到7,7之后呢,因为8,9,10刚才都被去掉了,而100以内的任意合数肯定都有一个因子小于10(100的开方),所以,去掉,2,3,5,7的倍数后剩下的都是质数了。

     1 public class Solution {
     2     public int countPrimes(int n) {
     3         if (n <= 2)
     4             return 0;
     5         boolean[] primes = new boolean[n];
     6         primes[0] = false;
     7         for (int i = 2; i < n; i++) primes[i] = true;
     8         for (int i = 2; i < Math.sqrt(n); i++) {
     9             if (primes[i] == true) {
    10                 int j = 2;
    11                 while (i * j < n) {
    12                     primes[i * j] = false;
    13                     j++;
    14                 }
    15             }
    16         }
    17         int result = 0;
    18         for (int i = 2; i < n; i++) {
    19             if (primes[i])
    20                 result++;
    21         }
    22         return result;
    23     }
    24 }
  • 相关阅读:
    Jquery超简单遮罩层实现代码
    java中Token验证
    基于Token的WEB后台认证机制
    jsp页面数据回显(select下拉选择框)
    ckeditor 绑定事件
    ckeditor 触发事件(案例)
    Linux sed命令学习
    字符串 全排列生成问题
    算法导论第九章 第K顺序统计量
    字符串相似度算法 递归与动态规划求解分析
  • 原文地址:https://www.cnblogs.com/ireneyanglan/p/4806108.html
Copyright © 2020-2023  润新知