Hướng dẫn find divisors of a number javascript - tìm ước của một số javascript
Một số nhận xét chung: Show
Việc thực hiện của bạn là chính xác nhưng không hiệu quả, vì số lần lặp vòng lặp và hoạt động còn lại bằng với số đầu vào. Số lượng các ước số có thể được tính toán hiệu quả từ hệ số số nguyên tố: nếu $$ n = p_1^{e_1} \, p_2^{e_2} \ cdots p_k^{e_k} $$ là yếu tố của \ $ n \ $ vào Số nguyên tố \ $ p_i \ $ với số mũ \ $ e_i \ $, sau đó $$ \ sigma_0 (n) = (e_1+1) (e_2+1) $ n \ $, xem ví dụ Wikipedia: Hàm chia. Ví dụ: $$ 720 = 2^4 \ cdot 3^2 \ cdot 5^1 \ longrightarrow \ sigma_0 (720) = (4+1) (2+1) (1+1) = 30 \,. $$ Một triển khai trong JavaScript sẽ là
Ví dụ, 1 yêu cầu 720 hoạt động còn lại trong thuật toán của bạn, nhưng chỉ có 8 hoạt động còn lại và 6 bộ phận trong thuật toán này. Tôi đang thực hiện một số bài tập mã hóa và tôi không thể giải quyết vấn đề này. Tìm tổng của tất cả các ước số của một số nguyên nhất định. Đối với n = 12, đầu vào phải là sumofdivisors (n) = 28. Ví dụ: 1 + 2 + 3 + 4 + 6 + 12 = 28. Các ràng buộc: 1 ≤ N ≤ 15. Làm thế nào tôi có thể giải quyết bài tập này? Tôi không thể.
Đã hỏi ngày 31 tháng 3 năm 2017 lúc 22:21Mar 31, 2017 at 22:21
Franco Manzurfranco ManzurFranco Manzur 3531 Huy hiệu vàng7 Huy hiệu bạc18 Huy hiệu đồng1 gold badge7 silver badges18 bronze badges
Đây là một cách khác để làm điều đó:
JSfiddle: https://jsfiddle.net/32n5jdnb/141/ Explaining:
Giảm tài liệu: https://developer.mozilla.org/pt-r/docs/web/javascript/reference/global_objects/array/reduce Chỉnh sửa Trả lời Tristan về phía trước:
Đã trả lời ngày 31 tháng 3 năm 2017 lúc 22:58Mar 31, 2017 at 22:58
Nelson Teixeiranelson TeixeiraNelson Teixeira 5.9375 Huy hiệu vàng36 Huy hiệu bạc68 Huy hiệu Đồng5 gold badges36 silver badges68 bronze badges 3 Bạn phải kiểm tra xem số được chỉ định có hay không là một số chia của số nguyên đã cho. Bạn có thể sử dụng modulo 6 - nếu không có phần còn lại, số được chỉ định là chia của số nguyên đã cho - thêm nó vào tổng.
Đã trả lời ngày 31 tháng 3 năm 2017 lúc 22:28Mar 31, 2017 at 22:28
Dưới đây là một giải pháp với hiệu suất thuật toán tốt hơn (O (SQRT (yếu tố chính lớn nhất của N)))
Đã trả lời ngày 24 tháng 9 năm 2019 lúc 7:16Sep 24, 2019 at 7:16
1 Vì 7 cũng là một Duvisor, điều này có thể được thực hiện hiệu quả hơn.
Đã trả lời ngày 3 tháng 9 năm 2021 lúc 13:44Sep 3, 2021 at 13:44
LancelanceLance 6575 Huy hiệu bạc20 Huy hiệu Đồng5 silver badges20 bronze badges
Trong trường hợp này, chúng tôi coi bộ đếm của chúng tôi là bắt đầu với 1 vì theo mặc định, tất cả các số đều chia hết cho 1. Sau đó, chúng tôi một nửa số vì các số có thể chia n ít hơn hoặc bằng một nửa giá trị của nó Đã trả lời ngày 6 tháng 3 lúc 22:00Mar 6 at 22:00
AlkarialkariAlkari 932 huy hiệu bạc11 huy hiệu đồng2 silver badges11 bronze badges Làm thế nào để bạn tìm thấy các ước số của một số?Công thức tính toán tổng số chia của một số ′ n ′ trong đó n có thể được biểu diễn dưới dạng công suất của số nguyên tố được hiển thị là.If n = paQbrc .then tổng số chia = (a+1) (b+1) (c+1).If N=paqbrc . Then total number of divisors =(a+1)(b+1)(c+1).
Làm thế nào để bạn tìm thấy các ước số của một số trong java?Để có được ước số của một số N, chúng ta nên chia n cho tất cả các số ở giữa 1 và N bao gồm 1 và N. Chúng ta sẽ sử dụng toán tử Modulus đưa ra lời nhắc.Nếu nhắc nhở bằng không, chúng ta có thể nói số đã cho chia hết cho một số khác.Đối với Ex: 10%2 = 0 (10 chia hết cho 2 mà không cần nhắc nhở)divide N by all numbers in between 1 and N including 1 and N. We will use modulus operator which gives reminder. If reminder is zero, we can say given number is divisible by another number. For ex: 10%2= 0 (10 is divisible by 2 without a reminder)
Làm thế nào để bạn nhân tố trong JavaScript?Lao động một số với đệ quy.hàm factorialize (num) {// Nếu số nhỏ hơn 0, hãy từ chối nó.if (num <0) return -1;// Nếu số là 0, giai thừa của nó là 1. .... Lao động một số với một vòng lặp trong thời gian.hàm factorialize (num) {// bước 1. .... Factorial một số với một vòng lặp .. |