在上面的代碼中,使用一個for循環遍歷1到目標數num,如果num能夠被整除,則將該數添加到divisors數組中。最終返回divisors數組即可獲得目標數的約數集合。 當然,上面的代碼并不普遍適用于所有的數字。在實際開發中,還需要考慮到一些性能和邊界問題。 首先,一些數字的約數是成對出現的。例如,12的約數除1和12外,其他約數都是成對出現的,如2和6、3和4。因此,可以通過循環遍歷到目標數字的平方根即可,這樣可以減少循環次數。修改后的代碼如下:function getDivisors(num) {
var divisors = [];
for(var i = 1; i<= num; i++) {
if(num % i === 0) {
divisors.push(i);
}
}
return divisors;
}
var num = 5;
var divisors = getDivisors(num);
console.log(divisors); // [1, 5]
在上面的代碼中,如果i不等于num的平方根,則說明num/i也是num的約數,將其添加到divisors數組中。 另外,還需要考慮一些邊界情況,例如目標數為0或負數時的處理。function getDivisors(num) {
var divisors = [];
for(var i = 1; i<= Math.sqrt(num); i++) {
if(num % i === 0) {
divisors.push(i);
if(i !== Math.sqrt(num)) {
divisors.push(num / i);
}
}
}
return divisors.sort(function(a, b) { return a - b; });
}
var num = 12;
var divisors = getDivisors(num);
console.log(divisors); // [1, 2, 3, 4, 6, 12]
在上面的代碼中,如果num小于等于0,則返回空數組[]。 總的來說,計算約數是比較簡單但又非常實用的問題,在JavaScript中,可以通過循環遍歷和一些小技巧實現。在實際開發中,可以根據需求和性能要求選用不同的算法來計算約數。function getDivisors(num) {
if(num<= 0) {
return [];
}
var divisors = [1];
for(var i = 2; i<= Math.sqrt(num); i++) {
if(num % i === 0) {
divisors.push(i);
if(i !== Math.sqrt(num)) {
divisors.push(num / i);
}
}
}
divisors.push(num);
return divisors.sort(function(a, b) { return a - b; });
}
var num = 0;
var divisors = getDivisors(num);
console.log(divisors); // []