在 JavaScript 中将数字表示为素数的幂和乘积

问题

我们需要编写一个接受正整数的 JavaScript 函数。我们的函数应该将这个数字表示为素数的某些幂的总和。

因此,对于数字 n,我们的函数应该返回这样的字符串 -

n = "(p1**n1)(p2**n2)...(pk**nk)"

其中 p1、p2、p3..pk 是质数,n1、n2、..nk 是它们的非负幂,a ** b 代表 a 的 b 次幂。

示例

以下是代码 -

const isPrime = num => {

    for(let i = 2; i < num; i++){

        if(num % i === 0){

            return false;

        }

    };

    return num > 1;

}

const count = (arr = [], n = 1) => {

for(const k in arr){

    if(n % k === 0){

         arr[k] += 1;

         return count(arr, n / k)

      }

   };

       

   return arr;

};

const primeFactors = (n) => {

    const res = [];

    for(let i = 2; i < n; i++){

        if(isPrime(i)){

            res.push(i);

        }

    };

  const arr = [];

    for(const el in res){

        arr[el] = 0;

    };

    count(arr,n);

    let str = '';

    for(const x in arr){

  if(arr[x] > 1){

         str += '(%s**%s)' %(x,arr[x])

      }else if(arr[x] === 1){

          str += '(%s)' % (x)

      };

  };

   return str

};

console.log(primeFactors(86240));

输出结果
(2**5)(5)(7**2)(11)

以上是 在 JavaScript 中将数字表示为素数的幂和乘积 的全部内容, 来源链接: utcz.com/z/338783.html

回到顶部