自然数被称为k-质数,如果它恰好有k个质因数,计数时考虑重复。
这意味着即使4的唯一质因数是2,它仍然是一个2-质数,因为−
4 = 2 * 2,两个2将被分别计算,计数为2。
同样,8是3-质数,因为8 = 2 * 2 * 2,计数为3。
我们需要编写一个JavaScript函数,接受一个数字k,一个距离和一个范围。
我们的函数应返回一个包含范围内距离恰好等于指定距离的k-质数的数组。
以下是代码 −
Live Demo
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 ] ]