在 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 ] ]
广告