Computer >> Hướng Dẫn 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ố bằng JavaScript


Vấn đề

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

Do đó, với số n, hàm phải trả về chuỗi như sau:

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

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

Ví dụ

Dưới đâ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));

Kết quả

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