Javascript 什么是允许优化素数查找的代数?

Javascript 什么是允许优化素数查找的代数?,javascript,optimization,primes,Javascript,Optimization,Primes,我在一次采访中错过了这个优化,我想回顾一下允许它的代数: for(let j = 2; j * j < i; j++){ for(设j=2;j*j

我在一次采访中错过了这个优化,我想回顾一下允许它的代数:

for(let j = 2; j * j < i; j++){
for(设j=2;j*j
下面代码中的上一行不是使用
j
,而是使用
j*j
或等效

这是我忘了的我们小学时学的基础代数吗?可以提供代数备忘单或类似的参考资料吗

// prime-2
// 2 optimizations - odds and square root
function prime2(n){
  const primes = [2];

  // first optimization is to only check odd numbers ...
  not_prime: for(let i = 3; i < n; i += 2){

    // second optimization is to only check up to ...
    // the square root of j when looking for factors
    for(let j = 2; j * j < i; j++){
      if(i % j === 0){
        continue not_prime;
      }
    }
    primes.push(i);
  }
  return primes;
}
//prime-2
//2个优化-赔率和平方根
函数素数2(n){
常量素数=[2];
//第一个优化是只检查奇数。。。
非素数:for(设i=3;i
我认为应该是
j*jLeetCode有一个问题(),并且有一个有用的提示来帮助您理解这一点:

让我们写下所有12个因素:

2×6=12

3×4=12

4×3=12

6×2=12

如您所见,不需要计算4×3和6×2。 因此,我们只需要考虑因素√因为,如果n是 可被某个数p整除,则n=p×q,且自p≤ q、 我们可以 推导出p≤ √n


这回答了你的问题吗?我100%确定这有一个代数恒等式或类似的恒等式……我就是想不起来了。那么如果你特别问代数,这听起来应该是开着的。如果n=a*b和a不,这个问题是重复的,应该是封闭的。此外,这个陈述的真理是显而易见的,并且很容易证明:选择任意a>sqrt(n),b>=a,然后a*b>n,很明显。我100%确定这有一个代数恒等式或类似的恒等式……我就是想不起来了。你说的最坏情况是什么意思……只有一种情况。算法只输入了n。你的答案直觉上是有意义的,但我要求的是证明它的定律。我发誓有人为我提供了一个代数恒等式这不是一些直观推导出的有意义的方程。这有一个代数定律。你可以通读维基百科关于素数()的文章来了解更多关于素数的知识,当这个想法出现时,你就不需要超越素数√你也可以阅读那里的“试用版”部分(或单独的wiki页面-)来了解更多关于这种方法的信息。