ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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' ]