在 JavaScript 中寻找具有特定距离且在范围内满足 k 素数条件的数字


K 素数

如果一个自然数恰好有 k 个质因子,包括重数,那么它被称为 k 素数。

这意味着即使 4 的唯一质因子是 2,它也将是一个 2 素数,因为 -

4 = 2 * 2,两个 2 会单独计数,结果为 2。

类似地,8 是 3 素数,因为 8 = 2 * 2 * 2,结果为 3。

问题

我们需要编写一个 JavaScript 函数,该函数接受一个数 k、一个距离和一个范围。

我们的函数应该返回一个数组,其中包含满足 k 素数条件的数组,这些数组在范围内的距离与指定的距离完全相等。

示例

以下为代码展示 -

 在线示例

const k = 2;
const step = 2;
const range = [0, 50];
const kPrimeSteps = (k = 1, step = 1, [start, end]) => {
   const res = [];
   let i = start;
   const findLen = (n = 1) => {
      let count = 0, i = 2;
      while (i * i <= n) {
         while (n % i === 0) {
            count++;
            n /= i;
         }
         i++;
      }
      if (n > 1) count++;
      return count;
   }
   while (i <= end - step) {
      if ((findLen(i) == k && findLen(i+step) == k))
      res.push([i, i+step]);
      i++;
   }
   return res;
};
console.log(kPrimeSteps(k, step, range));

输出

以下为控制台输出 -

[ [ 4, 6 ], [ 33, 35 ] ]

更新于: 2021 年 4 月 20 日

312 次查看

开启您的职业生涯

完成课程获得认证

开始
广告