V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
a62527776a
V2EX  ›  问与答

请问这样写的算法复杂度是多少?

  •  
  •   a62527776a · 2021-05-08 18:44:04 +08:00 · 1091 次点击
    这是一个创建于 1322 天前的主题,其中的信息可能已经有所发展或是发生改变。
    /**
     * @method getNPower2plus1 求前 m 个满足 n^2+1 的素数
     * @return {Array<Number>} pList
     **/ 
    let getNPower2plus1 = (m) => {
      let pList = [];
      let pListLen = 0;
      // 循环次数
      let loopTimes = 0; 
    
      // n 从 2 开始
      let n = 2;
    
      // 当 pList 数量小于 m 时,求素数
      while (pListLen < m) {
        loopTimes += 1;
        let nPow2Plus1 = Math.pow(n, 2) + 1;
        // 是否为素数
        if (isPrimeNumber(nPow2Plus1)) {
          pList.push(nPow2Plus1);
          pListLen += 1;
        }
        n += 1;
      }
    
      console.log(loopTimes); // 23
      return pList;
    }
    
    console.log(getNPower2plus1(8)); // [5,17,37,101,197,257,401,577]
    

    求求好心的大哥大姐帮我解答一下

    我疑惑的是 我输入了 8 循环了 20 多次,那么算 logn 吗?

    3 条回复    2021-05-08 20:35:06 +08:00
    zxCoder
        1
    zxCoder  
       2021-05-08 19:45:51 +08:00
    你这算法复杂度不是 O(m*isPrimeNumber 的复杂度)吗?
    而且算法复杂度和循环次数没有关系。。。。。
    geelaw
        2
    geelaw  
       2021-05-08 20:00:42 +08:00 via iPhone
    答案是暂时不知道,因为这需要探究 n^2+1 里质数的分布

    https://math.stackexchange.com/questions/44126/primes-of-the-form-n21-hard

    另外任何有限的尝试都不能说明算法的渐近时间复杂度。
    a62527776a
        3
    a62527776a  
    OP
       2021-05-08 20:35:06 +08:00
    @zxCoder 这么一说我就懂了
    @geelaw 原来如此

    谢谢二位
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2738 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:34 · PVG 10:34 · LAX 18:34 · JFK 21:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.