Hướng dẫn how do i add all the divisors to a number in python? - làm cách nào để thêm tất cả các ước số vào một số trong python?

Cập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21:51:39 (UTC/GMT +8 giờ)

Toán Python: Bài tập-15 với giải pháp

Viết một chương trình Python để trả về tổng của tất cả các ước số của một số.

Giải pháp mẫu:-:-

Mã Python:

def sum_div(number):
    divisors = [1]
    for i in range(2, number):
        if (number % i)==0:
            divisors.append(i)
    return sum(divisors)
print(sum_div(8))
print(sum_div(12))

Đầu ra mẫu:

7
16

Trình bày bằng hình ảnh:

Hướng dẫn how do i add all the divisors to a number in python? - làm cách nào để thêm tất cả các ước số vào một số trong python?

Flowchart:

Hướng dẫn how do i add all the divisors to a number in python? - làm cách nào để thêm tất cả các ước số vào một số trong python?

Trực quan hóa thực thi mã Python:

Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực hiện chương trình đã nói:

Trình chỉnh sửa mã Python:

Có một cách khác để giải quyết giải pháp này? Đóng góp mã của bạn (và nhận xét) thông qua Disqus.

Trước đây: Viết chương trình Python để tổng hợp tất cả các số thân thiện từ 1 đến các số được chỉ định. Write a Python program to sum all amicable numbers from 1 to specified numbers.
Next: Write a Python program to print all permutations of a given string (including duplicates).

Python: Lời khuyên trong ngày

Đặt các hoạt động cơ bản:

>>> A = {1, 2, 3, 3}
>>> A
set([1, 2, 3])
>>> B = {3, 4, 5, 6, 7}
>>> B
set([3, 4, 5, 6, 7])
>>> A | B
set([1, 2, 3, 4, 5, 6, 7])
>>> A & B
set([3])
>>> A - B
set([1, 2])
>>> B - A
set([4, 5, 6, 7])
>>> A ^ B
set([1, 2, 4, 5, 6, 7])
>>> (A ^ B) == ((A - B) | (B - A))
True

Xây dựng vấn đề

Cho một số nguyên n.

Nhận tất cả các ước số c của số n để c * i = n cho một số nguyên khác

7
16
0. Định dạng đầu ra mong muốn là một danh sách các số nguyên (phân chia).

Dưới đây là một vài ví dụ:

n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]

Phương pháp 1: Cách tiếp cận ngây thơ

Số nguyên

7
16
0 là một ước số của n nếu
7
16
3 bằng không.

Chúng tôi sử dụng quan sát này trong hàm

7
16
4. Chúng tôi tạo một danh sách trống ban đầu
7
16
5 và kiểm tra mọi số nguyên
7
16
0 trong khoảng từ 0 đến
7
16
7 liệu số này có phải là người chia của n hay không. Nếu có, chúng tôi nối nó vào danh sách.

Hướng dẫn how do i add all the divisors to a number in python? - làm cách nào để thêm tất cả các ước số vào một số trong python?

Mã Python sau đây hoàn thành điều này:

def divisors(n):
    result = []
    for i in range(1, n//2 + 1):
        if n % i == 0:
            result.append(i)
    result.append(n)
    return result

print(divisors(24))
# [1, 2, 3, 4, 6, 8, 12, 24]

Cách tiếp cận này không hiệu quả lắm vì chúng tôi đi qua mỗi số từ 0 đến

7
16
7. Nếu số N trở nên lớn như
>>> A = {1, 2, 3, 3}
>>> A
set([1, 2, 3])
>>> B = {3, 4, 5, 6, 7}
>>> B
set([3, 4, 5, 6, 7])
>>> A | B
set([1, 2, 3, 4, 5, 6, 7])
>>> A & B
set([3])
>>> A - B
set([1, 2])
>>> B - A
set([4, 5, 6, 7])
>>> A ^ B
set([1, 2, 4, 5, 6, 7])
>>> (A ^ B) == ((A - B) | (B - A))
True
0, chúng ta cần kiểm tra mọi số
>>> A = {1, 2, 3, 3}
>>> A
set([1, 2, 3])
>>> B = {3, 4, 5, 6, 7}
>>> B
set([3, 4, 5, 6, 7])
>>> A | B
set([1, 2, 3, 4, 5, 6, 7])
>>> A & B
set([3])
>>> A - B
set([1, 2])
>>> B - A
set([4, 5, 6, 7])
>>> A ^ B
set([1, 2, 4, 5, 6, 7])
>>> (A ^ B) == ((A - B) | (B - A))
True
1.

Độ phức tạp thời gian chạy: Độ phức tạp thời gian chạy của việc tính toán các giao diện của số N là O (n) bằng cách sử dụng phương pháp này giả sử hoạt động modulo có thể được thực hiện trong một bước. The runtime complexity of calculating the divisors of number n is O(n) using this approach assuming the modulo operation can be performed in one step.

Chúng ta có thể làm tốt hơn không? Đúng!

Phương pháp 2: Giảm số lần lặp lại vòng lặp

Chúng tôi sử dụng hai quan sát để giảm số lần lặp vòng lặp của thuật toán ngây thơ.

Quan sát 1: Nếu số ____10 là một ước số của n, số

>>> A = {1, 2, 3, 3}
>>> A
set([1, 2, 3])
>>> B = {3, 4, 5, 6, 7}
>>> B
set([3, 4, 5, 6, 7])
>>> A | B
set([1, 2, 3, 4, 5, 6, 7])
>>> A & B
set([3])
>>> A - B
set([1, 2])
>>> B - A
set([4, 5, 6, 7])
>>> A ^ B
set([1, 2, 4, 5, 6, 7])
>>> (A ^ B) == ((A - B) | (B - A))
True
4 phải là một số nguyên và một ước số của n
>>> A = {1, 2, 3, 3}
>>> A
set([1, 2, 3])
>>> B = {3, 4, 5, 6, 7}
>>> B
set([3, 4, 5, 6, 7])
>>> A | B
set([1, 2, 3, 4, 5, 6, 7])
>>> A & B
set([3])
>>> A - B
set([1, 2])
>>> B - A
set([4, 5, 6, 7])
>>> A ^ B
set([1, 2, 4, 5, 6, 7])
>>> (A ^ B) == ((A - B) | (B - A))
True
6. Điều này có nghĩa là mỗi lần chúng ta tìm thấy một ước số ____10, chúng ta cũng có thể thêm ước số
>>> A = {1, 2, 3, 3}
>>> A
set([1, 2, 3])
>>> B = {3, 4, 5, 6, 7}
>>> B
set([3, 4, 5, 6, 7])
>>> A | B
set([1, 2, 3, 4, 5, 6, 7])
>>> A & B
set([3])
>>> A - B
set([1, 2])
>>> B - A
set([4, 5, 6, 7])
>>> A ^ B
set([1, 2, 4, 5, 6, 7])
>>> (A ^ B) == ((A - B) | (B - A))
True
8 vào danh sách các ước số.
If number
7
16
0 is a divisor of n, number
>>> A = {1, 2, 3, 3}
>>> A
set([1, 2, 3])
>>> B = {3, 4, 5, 6, 7}
>>> B
set([3, 4, 5, 6, 7])
>>> A | B
set([1, 2, 3, 4, 5, 6, 7])
>>> A & B
set([3])
>>> A - B
set([1, 2])
>>> B - A
set([4, 5, 6, 7])
>>> A ^ B
set([1, 2, 4, 5, 6, 7])
>>> (A ^ B) == ((A - B) | (B - A))
True
4 must be an integer and a divisor of n as well because
>>> A = {1, 2, 3, 3}
>>> A
set([1, 2, 3])
>>> B = {3, 4, 5, 6, 7}
>>> B
set([3, 4, 5, 6, 7])
>>> A | B
set([1, 2, 3, 4, 5, 6, 7])
>>> A & B
set([3])
>>> A - B
set([1, 2])
>>> B - A
set([4, 5, 6, 7])
>>> A ^ B
set([1, 2, 4, 5, 6, 7])
>>> (A ^ B) == ((A - B) | (B - A))
True
6. This means that each time we find a divisor
7
16
0, we can also add the divisor
>>> A = {1, 2, 3, 3}
>>> A
set([1, 2, 3])
>>> B = {3, 4, 5, 6, 7}
>>> B
set([3, 4, 5, 6, 7])
>>> A | B
set([1, 2, 3, 4, 5, 6, 7])
>>> A & B
set([3])
>>> A - B
set([1, 2])
>>> B - A
set([4, 5, 6, 7])
>>> A ^ B
set([1, 2, 4, 5, 6, 7])
>>> (A ^ B) == ((A - B) | (B - A))
True
8 to the list of divisors.

Quan sát 2: Đối với một cặp ____ ____ 6 hướng

n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
0, một trong số chúng phải nhỏ hơn hoặc bằng căn bậc hai của n. Lý do rất đơn giản: nếu cả hai đều lớn hơn căn bậc hai, sự nhân lên
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
2 sẽ lớn hơn n vì chắc chắn vì
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
4. Do đó, chúng ta có thể đi qua các ước số tiềm năng từ
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
5 đến
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
6 và chắc chắn đã tìm thấy tất cả các ước số. Điều này giúp chúng tôi tiết kiệm tất cả các lần lặp từ
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
6 đến
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
8.
For a pair of n-divisors
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
0, one of them must be smaller than or equal to the square root of n. The reason is simple: if both were larger than the square root, the multiplication
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
2would be larger than n for sure because
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
4. Thus, we can traverse the potential divisors from
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
5 to
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
6 and be sure to have found all divisors. This saves us all iterations from
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
6 to
n = 10       
# Output: [1, 2, 5, 10]

n = 13 
# Output: [1, 13]

n = 24 
# Output: [1, 2, 3, 4, 6, 8, 12]
8.

Tại đây, các tinh chỉnh đơn giản với lợi ích hiệu suất đáng kể:

def divisors(n):
    result = set()
    for i in range(1, int(n**0.5)+1):
        if n % i == 0:
            result.add(i)
            result.add(n//i)
    return list(result)

print(divisors(24))
# [1, 2, 3, 4, 6, 8, 12, 24]

Mã này chỉ lặp lại từ 0 đến căn bậc hai của số n. Nếu chúng ta tìm thấy một ước số ____10, chúng ta cũng thêm

def divisors(n):
    result = []
    for i in range(1, n//2 + 1):
        if n % i == 0:
            result.append(i)
    result.append(n)
    return result

print(divisors(24))
# [1, 2, 3, 4, 6, 8, 12, 24]
1, đó là yếu tố khác và một ước số của n.

Độ phức tạp thời gian chạy: Độ phức tạp thời gian chạy của việc tính toán các giao diện của số N là O (n^0,5) bằng cách sử dụng phương pháp này giả sử hoạt động modulo được tính là một bước. The runtime complexity of calculating the divisors of number n is O(n^0.5) using this approach assuming the modulo operation is counted as one step.

Lập trình viên hài hước - Blockchain

Hướng dẫn how do i add all the divisors to a number in python? - làm cách nào để thêm tất cả các ước số vào một số trong python?
Các blockchains giống như những cái móc vật lộn, trong đó nó cực kỳ tuyệt vời khi bạn gặp phải một vấn đề mà họ là giải pháp phù hợp, nhưng nó xảy ra quá hiếm khi trong cuộc sống thực. Nguồn - XKCDsource – xkcd

Đi đâu từ đây?

Đủ lý thuyết. Hãy để có được một số thực hành!

Các lập trình viên được trả tiền sáu con số và hơn thế nữa vì họ có thể giải quyết các vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa.

Để trở nên thành công hơn trong việc mã hóa, giải quyết nhiều vấn đề thực sự hơn cho người thực. Đó là cách bạn đánh bóng các kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, những gì mà việc sử dụng lý thuyết học tập mà không ai cần?

Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế!

Bạn có muốn ngừng học hỏi với các dự án đồ chơi và tập trung vào các dự án mã thực tế kiếm tiền cho bạn và giải quyết các vấn đề thực sự cho mọi người?

Nếu câu trả lời của bạn là có !, Hãy xem xét việc trở thành một nhà phát triển tự do Python! Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện các kỹ năng trăn của bạn, ngay cả khi bạn là người mới bắt đầu hoàn toàn.YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi Làm thế nào để xây dựng kỹ năng thu nhập cao của bạn Python và tìm hiểu cách tôi phát triển kinh doanh mã hóa của mình trực tuyến và làm thế nào bạn có thể, từ sự thoải mái của bạn riêng nhà.

Tham gia hội thảo trên web miễn phí ngay bây giờ!

Hướng dẫn how do i add all the divisors to a number in python? - làm cách nào để thêm tất cả các ước số vào một số trong python?

Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.

Làm thế nào để bạn tổng hợp một số ước số trong Python?

Toán Python: Trả về tổng của tất cả các ước số của một số..
Giải pháp mẫu:-.
Mã Python: def sum_div (số): chia)) in (sum_div (12)) ....
Trình bày bằng hình ảnh:.
Sơ đồ: ... .
Trình chỉnh sửa mã Python:.

Làm thế nào để bạn tổng hợp tất cả các ước số của một số?

Tổng của các ước số thích hợp bằng 6045−1800 = 4245 6045 - 1800 = 4245, vì vậy chúng tôi thấy 1800 là một số lượng phong phú.... Bằng chứng..

Công thức của các giao hàng là gì?

Công thức để tìm một ước số là gì?Nếu phần còn lại là 0, thì Divisor = Cổ tức ÷ thương số.Nếu phần còn lại không phải là 0, thì chia chia = (cổ tức - phần còn lại) /thương số.If the remainder is 0, then Divisor = Dividend ÷ Quotient. If the remainder is not 0, then Divisor = (Dividend – Remainder) /Quotient.

Tổng số của tất cả các ước số của 14 là bao nhiêu?

Giải pháp: Các yếu tố của mười bốn là 1, 2,7 và 14. Do đó, 24 là tổng yêu cầu.24 is the required sum.