Computer >> Máy Tính >  >> Lập trình >> Javascript

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

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một số n. Hàm của chúng ta sẽ trả về một mảng gồm tất cả các cặp số như vậy khi tổng là n và cả hai đều là số nguyên tố.

Ví dụ

Sau đâ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));

Đầu ra

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