Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm tất cả các cặp số nguyên tố có tổng bằng số đầu vào bằng JavaScript


Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một số n. Hàm phải trả về một mảng chứa tất cả các cặp số mà khi cộng lại bằng n và cả hai đều là số nguyên tố.

Ví dụ

Dưới đây là mã:

const num = 26; 
const isPrime = (n) => { 
  if (n % 2 === 0) return false; 
  let sqrtn = Math.sqrt(n)+1; 
  for (let i=3; i < sqrtn; i+=2) { 
    if (n % i === 0) return false; 
  } 
  return true; 
} 
const primeList = (a) => { 
  if (isPrime(a)) return a; else return false; 
}; 
const generateNumbers = (n) => { 
  let num = (n % 2 === 0) ? (n -1) : n; 
  let list = [] 
  for (let i = num; i > 3; i-=2) 
    list.push(i); 
  list.push(3,1); 
  return list; 
} 
const calculate = (num, list, results) => { 
  if (list.length === 0) return results; 
  let item = list.shift(); 
  let itemPairIndex = list.indexOf(num - item); 
  if (itemPairIndex !== -1) { 
    let itemPair = list.splice(itemPairIndex,1) 
    results.push(item+"+"+itemPair); 
  } 
  return calculate(num, list, results); 
} 
const findprimeSum = (num) => { 
  const pairs = []; 
  const list = generateNumbers(num).filter(primeList); 
  return calculate(num, list, []); 
} 
console.log(findprimeSum(num));

Kết quả

[ '23+3', '19+7' ]