一个数是质数吗? Codewars kata 解决方案超时。如何改进?

Is a number prime? Codewars kata solution timing out. How to improve it?

根据标题,我已经解决了以下问题 https://www.codewars.com/kata/5262119038c0985a5b00029f,这是我的解决方案:

 let isPrime = (num) => {
     for (let i = 2; i < num; i++)
         if (num % i === 0)

         return false;
    return num > 1;
}

型描述如下:

定义一个函数,它接受一个整数参数和 returns 逻辑值 true 或 false,具体取决于整数是否为质数。

根据维基百科,质数(或素数)是大于 1 的自然数,除了 1 和它本身之外没有正约数。

要求 您可以假设您将获得一个整数输入。 您不能假设整数只会是正数。您也可能会得到负数(或 0)。 关于性能的注意事项:不需要花哨的优化,但最微不足道的解决方案仍然可能会超时。数字最多为 2^31(或类似,取决于语言版本)。一直循环到 n,或 n/2,会太慢。

所以我的问题是,既然我的解决方案超时了,我该如何改进呢?谢谢!

查找 Sieve of Eratosthenes,您可以找到可以停止递增的点 i

剧透:sqrt(num)