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

2021-05-08 18:44:04 +08:00
 a62527776a
/**
 * @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 吗?

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

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

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

谢谢二位

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/775722

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX