📅  最后修改于: 2023-12-03 15:00:21.650000             🧑  作者: Mango
在HackerRank的Day 25问题中,我们需要判断一个给定的数字是否为质数。我们需要实现一个名为isPrime
的函数,该函数接收一个整数作为输入并输出Prime
或Not prime
。
判断一个数是否为质数最简单的方法是使用遍历算法。即从2开始,一直到该数的平方根为止进行遍历,并检查该数是否可以被该范围内的整数整除。
如果不能,则该数字是素数。否则,它不是素数。 在这里,我们需要计算sqrt以检查在正确的范围内进行迭代。
对于所有数字,其算法复杂度为O(sqrt(n))。
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是输入数字。对于输入数字很大的情况下仍然效率很高,可以同时处理多个数字。