Computer >> Máy Tính >  >> Lập trình >> Javascript

Biểu diễn số dưới dạng lũy ​​thừa và tích của các số nguyên tố trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một số nguyên dương. Hàm của chúng ta phải biểu diễn số này dưới dạng tổng của một số lũy thừa của các số nguyên tố.

Do đó, đối với số n, hàm của chúng ta sẽ trả về một chuỗi như thế này -

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

Trong đó p1, p2, p3..pk là các số nguyên tố và n1, n2, .. nk là lũy thừa không âm của chúng và a ** b là viết tắt của a nâng lên lũy thừa b.

Ví dụ

Sau đây là mã -

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));

Đầu ra

(2**5)(5)(7**2)(11)