原题描述

原题链接

统计所有小于非负整数 n 的质数的数量。

示例 1:

输入:n = 10

输出:4

解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

示例 2:

输入:n = 0

输出:0

示例 3:

输入:n = 1

输出:0


提示:

0 <= n <= 5 * 106

个人解法

Java

JavaScript

  1. /**
  2. * @param {number} n
  3. * @return {number}
  4. */
  5. var countPrimes = function(n) {
  6. var num = 0;
  7. for(var i = 2;i < n;i++){
  8. num += (function(i){
  9. for(var j = 2;j <= Math.sqrt(i);j++){
  10. if(i % j == 0){
  11. return 0;
  12. }
  13. }
  14. return 1;
  15. }(i));
  16. }
  17. return num;
  18. };

更优解法

Java

JavaScript

  1. const isPrime = (x) => {
  2. for (let i = 2; i * i <= x; ++i) {
  3. if (x % i == 0) {
  4. return false;
  5. }
  6. }
  7. return true;
  8. }
  9. var countPrimes = function(n) {
  10. let ans = 0;
  11. for (let i = 2; i < n; ++i) {
  12. ans += isPrime(i);
  13. }
  14. return ans;
  15. };