我正在解決一個涉及令人欽佩的數字的問題,這些數字被定義為
一個等于其所有因數之和的數字——前提是其中一個是負數。
例如,12 的正確除數是 1、2、3、4、6,總共 16。但是,如果 2 為負數,則總數將為 12,即數字本身。因此,12 是一個令人欽佩的數字。
12 = 1 - 2 3 4 6
本質上,我必須弄清楚什么因素應該是負面的才能獲得令人欽佩的數字。
我已經解決了一個處理完美數字的類似問題, 并且正在使用類似的方法來解決這個問題。基本上,我首先為不包括數字本身的數字創建一系列因子。然后,我創建一個包含數字的所有因子的相同陣列的陣列。
function admirable(n) {
function factors(n) {
let factors = []
for(let i = 1; i <= n; i ) {
if(n % i == 0) {
factors.push(i);
}
}
return factors
}
let arr = []
for (let i=0; i<baseArr.length; i ) {
arr.push(baseArr)
}
return arr
}
admirable(6) // [ [ 1, 2, 3 ], [ 1, 2, 3 ], [ 1, 2, 3 ] ]
admirable(12) // [
[ 1, 2, 3, 4, 6 ],
[ 1, 2, 3, 4, 6 ],
[ 1, 2, 3, 4, 6 ],
[ 1, 2, 3, 4, 6 ],
[ 1, 2, 3, 4, 6 ]
]
完成此操作后,我想遍歷每個陣列并將一個數字乘以 -1,這樣我就得到了結果:
admirable(6) // [ [ -1, 2, 3 ], [ 1, -2, 3 ], [ 1, 2, -3 ] ]
admirable(12) //
// [
// [ -1, 2, 3, 4, 6 ],
// [ 1, -2, 3, 4, 6 ],
// [ 1, 2, -3, 4, 6 ],
// [ 1, 2, 3, -4, 6 ],
// [ 1, 2, 3, 4, -6 ]
// ]
一旦我得到了這個配置中的陣列,我想我可以完成問題的最后一部分:
如果 n 是可取的,則回傳必須為負的適當除數,以使適當除數的總和等于 n。
(我也很樂意接受任何有關解決這部分問題的方法的見解)
有沒有辦法遍歷每個陣列并使每個后續數字為負數,例如
arr[0][0] * -1, arr[1][1] * -1 ...arr[n][n] *-1
?
昨天我花了很多時間在這上面作業,但我的大腦無法解決它!
uj5u.com熱心網友回復:
你的問題
如果你有這樣的陣列:
let arr = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
然后你可以這樣做:
for (let i = 0; i < arr.length; i ) {
arr[i][i] *= -1;
}
這使
[[-1, 2, 3], [1, -2, 3], [1, 2, -3]]
或者...
假設您想檢查是否n
令人欽佩。設s
為 的除數之n
和,d
為 的除數n
。如果您計算過s
但取d
負數,您將獲得的總數為s - 2d
. n
當且僅當n = s - 2d
對于某個除數d
(然后d
是您要查找的數字)時,這是令人欽佩的。所以你可以只檢查是否d = (s - n) / 2
是一個整數和一個除數n
。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/508433.html
標籤:javascript 数组 循环 数学 迭代