用 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)
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP