Bộ chia trong python

Viết chương trình Python để tìm tất cả các ước của một số nguyên hoặc số bằng vòng lặp for. Trong ví dụ Python này, vòng lặp for lặp từ 1 đến một số đã cho và kiểm tra xem mỗi số có chia hết cho số không. Nếu Đúng, in số đó dưới dạng ước số

num = int(input("Please enter any integer to find divisors = "))

print("The Divisors of the Number = ")

for i in range(1, num + 1):
    if num % i == 0:
        print(i)
Bộ chia trong python

Mã Python sau đây thực hiện điều này

________số 8

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

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]
4. Nếu số n trở nên lớn chẳng hạn như
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]
7, chúng ta cần kiểm tra mọi số
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]
8

độ phức tạp thời gian chạy. Độ phức tạp trong thời gian chạy của việc tính các ước của số n là O(n) khi sử dụng phương pháp này với giả định rằng thao tác modulo có thể được thực hiện trong một bước

Chúng ta có thể làm tốt hơn khô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 lại của "thuật toán ngây thơ"

Quan sát 1. Nếu số

Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
5 là ước của
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
3 thì số
num = int(input("Please enter any integer to find divisors = "))


i = 1

while(i <= num):
    if num % i == 0:
        print(i)
    i = i + 1
61 phải là số nguyên và cũng là ước của
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
3 vì
num = int(input("Please enter any integer to find divisors = "))


i = 1

while(i <= num):
    if num % i == 0:
        print(i)
    i = i + 1
63. Điều này có nghĩa là mỗi lần chúng tôi tìm thấy một ước số
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
5, chúng tôi cũng có thể thêm ước số
num = int(input("Please enter any integer to find divisors = "))


i = 1

while(i <= num):
    if num % i == 0:
        print(i)
    i = i + 1
65 vào danh sách các ước số

Quan sát 2. Đối với một cặp

Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
3-ước số
num = int(input("Please enter any integer to find divisors = "))


i = 1

while(i <= num):
    if num % i == 0:
        print(i)
    i = i + 1
67, một trong số chúng phải nhỏ hơn hoặc bằng căn bậc hai của
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
3. lý do rất đơn giản. nếu cả hai đều lớn hơn căn bậc hai, thì phép nhân
num = int(input("Please enter any integer to find divisors = "))


i = 1

while(i <= num):
    if num % i == 0:
        print(i)
    i = i + 1
69 chắc chắn sẽ lớn hơn
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
3 vì
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
31. Do đó, chúng ta có thể duyệt qua các ước số tiềm năng từ
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
32 đến
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
33 và chắc chắn rằng đã 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 lại từ
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
33 đến
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
35

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

num = int(input("Please enter any integer to find divisors = "))


i = 1

while(i <= num):
    if num % i == 0:
        print(i)
    i = i + 1
6

Mã này chỉ lặp lại từ 0 đến căn bậc hai của số

Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
3. Nếu chúng tôi tìm thấy một ước số của
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
5, chúng tôi cũng thêm
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
38 là yếu tố khác và cũng là ước số của
Please enter any integer to find divisors = 100

1
2
4
5
10
20
25
50
100
3

độ phức tạp thời gian chạy. Độ phức tạp thời gian chạy của việc tính các ước của số n là O(n^0. 5) sử dụng cách tiếp cận này giả sử phép toán modulo được tính là một bước

Lập Trình Viên Hài Hước – Blockchain

Bộ chia trong python
“Blockchain giống như những cái móc vật lộn, ở chỗ nó cực kỳ thú vị khi bạn gặp phải một vấn đề mà chúng là giải pháp phù hợp, nhưng điều đó quá hiếm khi xảy ra trong cuộc sống thực. ” nguồn – xkcd

Đi đâu từ đây?

Đủ lý thuyết. Hãy tập một chút

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

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 với các dự án đồ chơi và tập trung vào các dự án mã thực tế giúp bạn kiếm tiền và giải quyết các vấn đề thực sự cho mọi người không?

🚀 Nếu câu trả lời của bạn là CÓ. , cân nhắc trở thành nhà phát triển Python tự do. Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện kỹ năng Python của bạn—ngay cả khi bạn là người hoàn toàn mới bắt đầu

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 “Cách xây dựng kỹ năng Python có thu nhập cao của bạn” và tìm hiểu cách tôi phát triển công việc viết mã của mình trực tuyến cũng như cách bạn có thể làm được—từ sự thoải mái của bạn nhà riêng

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

Bộ chia trong python

Chris

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

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

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

Một số chia hết cho 4 là gì?

Ví dụ, có sáu ước của 4; . 1 và −1 chia (là ước của) mọi số nguyên. Mọi số nguyên (và phủ định của nó) là ước của chính nó. 1, 2, 4, −1, −2, and −4, but only the positive ones (1, 2, and 4) would usually be mentioned. 1 and −1 divide (are divisors of) every integer. Every integer (and its negation) is a divisor of itself.

Vai trò của dải phân cách là gì?

Đó là số phải chia . số chia là 7. Đó là con số mà cổ tức của bạn sẽ được chia.

Một ước số của một số nguyên là gì?

Số chia. Ước của một số nguyên n, còn được gọi là thừa số của n, là một số nguyên chia hết cho n mà không chừa phần dư . ví dụ 1. 1. 7 là ước của 35 vì 35/7 = 5. Chúng ta cũng nói 35 chia hết cho 7, hoặc 35 là bội số của 7, hoặc 7 chia hết cho 35 và chúng ta thường viết 7. 35.