使用 JavaScript 查找总和为输入数字的所有可能素数对

问题

我们需要编写一个接受数字 n 的 JavaScript 函数。我们的函数应该返回一个包含所有这些数字对的数组,当求和时它们都是 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' ]

以上是 使用 JavaScript 查找总和为输入数字的所有可能素数对 的全部内容, 来源链接: utcz.com/z/353600.html

回到顶部