📌  相关文章
📜  day 25 运行时间和复杂性hackerrank解决方案javascript(1)

📅  最后修改于: 2023-12-03 15:00:21.650000             🧑  作者: Mango

解决方案: Hackerrank Day 25 JavaScript Solution

在HackerRank的Day 25问题中,我们需要判断一个给定的数字是否为质数。我们需要实现一个名为isPrime的函数,该函数接收一个整数作为输入并输出PrimeNot prime

解题思路

判断一个数是否为质数最简单的方法是使用遍历算法。即从2开始,一直到该数的平方根为止进行遍历,并检查该数是否可以被该范围内的整数整除。

如果不能,则该数字是素数。否则,它不是素数。 在这里,我们需要计算sqrt以检查在正确的范围内进行迭代。

对于所有数字,其算法复杂度为O(sqrt(n))。

Hackerrank Day 25解决方案
function isPrime(num) {
    if (num === 1) {
        return "Not prime";
    } else if (num === 2) {
        return "Prime";
    } else if (num % 2 === 0) {
        return "Not prime";
    } else {
        for (let i = 3; i <= Math.sqrt(num); i += 2) {
            if (num % i === 0) {
                return "Not prime";
            }
        }
        return "Prime";
    }
}

上面的函数首先检查num是否为1或2。如果是1,它不是素数,并返回Not prime。如果是2,则它是一个素数,返回Prime

如果num不是1或2,函数会进入下一个条件并检查是否为偶数。 如果是,那么它不是素数并返回Not prime。 如果不是偶数,则遍历从3到sqrt(num)的整数。

如果num可以被其中任何一个整数整除,则它不是素数并返回Not prime。 如果没有找到这样的整数,则它是一个素数,并返回Prime

复杂性

该函数的算法复杂度为O(sqrt(n)),其中n是输入数字。对于输入数字很大的情况下仍然效率很高,可以同时处理多个数字。