Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ค้นหาคู่เฉพาะที่เป็นไปได้ทั้งหมดที่รวมกันไม่เกินจำนวนอินพุตโดยใช้ JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่มีตัวเลข n ฟังก์ชันของเราควรส่งคืนอาร์เรย์ของคู่ตัวเลขทั้งหมดที่เมื่อผลรวมเป็น n และทั้งคู่เป็นจำนวนเฉพาะ

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

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));

ผลลัพธ์

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