美文网首页数据解构和算法收藏
47.算法->获取n以内所有素数个数

47.算法->获取n以内所有素数个数

作者: wo不是黄蓉 | 来源:发表于2022-02-10 11:07 被阅读0次

    day1:假期打卡失败,节后继续刷题
    算法->计数质数

    • 素数->质数;大于1的自然数,除了1和他本身以外不再有其他因数的自然数
    • 因数:整数a除以整数b的商正好是整数而没有余数,就说b是a的因数
    • 相当于双重for循环,外层for循环做统计,内层for循环用来判断是否质数用来做判断
    • 注意:不能使用双重for循环来实现,需要根据for循环的结果(j * j <= i)来判定是否进行ans++操作

    问题:计算结果正确,会出现提交超时的情况

    //判断是否是质数
    function isPrime(x) {
      for (let i = 2; i * i <= x; ++i) {
        if (x % i === 0) {
          return false;
        }
      }
      return true;
    }
    //统计质数个数
    function countPrimes(n) {
      if (n < 1) return 0;
      let ans = 0;
      for (let i = 2; i < n; ++i) {
        if (isPrime(i)) {
          ans++;
          // console.log("ans", ans);
        }
        // for (let j = 2; j * j <= i; ++j) {
        //   if (i % j !== 0) {
        //     ans++;
        //   }
        // }
      }
      return ans;
    }
    
    console.log(countPrimes(348436));
    
    

    相关文章

      网友评论

        本文标题:47.算法->获取n以内所有素数个数

        本文链接:https://www.haomeiwen.com/subject/olsnkrtx.html