📜  数组中素数对的数量(1)

📅  最后修改于: 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
总结

数组中素数对的数量是一道常见的算法问题,可以通过多种实现方式进行解决。在实现过程中需要注意素数判断算法的正确性和效率,同时也可以利用哈希表等数据结构简化计算过程。