📅  最后修改于: 2023-12-03 15:40:03.156000             🧑  作者: Mango
素数是指只能被1和自身整除的正整数,例如2、3、5、7、11等。寻找数组中的素数对数量是常见的算法问题,同时也可以练习数组遍历、循环和条件判断等基本语法。
我们可以使用两层循环遍历数组中的所有元素,对于每个元素判断是否为素数,如果是则再次遍历后面的元素并判断是否为素数,如果都是素数则计数器加一。这种实现方法需要使用到素数判断的算法,例如试除法、埃氏筛法等。
另外一种实现方法是使用哈希表来记录素数,这样可以在遍历数组时快速判断元素是否为素数,从而简化计算。这种方法的时间复杂度与哈希表的实现方式有关,通常为O(n)或O(nlogn)。
以下是使用试除法实现的JavaScript代码片段:
function isPrime(n) {
if (n <= 1) {
return false;
}
for (let i = 2; i <= Math.sqrt(n); i++) {
if (n % i === 0) {
return false;
}
}
return true;
}
function countPrimePairs(arr) {
let count = 0;
for (let i = 0; i < arr.length - 1; i++) {
if (isPrime(arr[i])) {
for (let j = i + 1; j < arr.length; j++) {
if (isPrime(arr[j]) && (arr[j] - arr[i] === 2)) {
count++;
}
}
}
}
return count;
}
以下是使用哈希表实现的Python代码片段:
def countPrimePairs(arr):
count = 0
primes = set()
for num in arr:
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.add(num)
for num in primes:
if num + 2 in primes:
count += 1
return count
数组中素数对的数量是一道常见的算法问题,可以通过多种实现方式进行解决。在实现过程中需要注意素数判断算法的正确性和效率,同时也可以利用哈希表等数据结构简化计算过程。