Hướng dẫn python divisors of a number - ước số python của một số

Nếu PC của bạn có hàng tấn bộ nhớ, một dòng đơn lẻ có thể đủ nhanh với Numpy:

N = 10000000; tst = np.arange(1, N); tst[np.mod(N, tst) == 0]
Out: 
array([      1,       2,       4,       5,       8,      10,      16,
            20,      25,      32,      40,      50,      64,      80,
           100,     125,     128,     160,     200,     250,     320,
           400,     500,     625,     640,     800,    1000,    1250,
          1600,    2000,    2500,    3125,    3200,    4000,    5000,
          6250,    8000,   10000,   12500,   15625,   16000,   20000,
         25000,   31250,   40000,   50000,   62500,   78125,   80000,
        100000,  125000,  156250,  200000,  250000,  312500,  400000,
        500000,  625000, 1000000, 1250000, 2000000, 2500000, 5000000])

Mất ít hơn 1S trên PC chậm của tôi.

Đây là một chương trình Python để tạo ra tất cả các ước số của một số nguyên.

Mô tả vấn đề

Chương trình lấy một số và tạo tất cả các ước số của số.

Giải pháp vấn đề

1. Lấy giá trị của số nguyên và lưu trữ nó trong một biến. 2. Sử dụng một vòng lặp và nếu câu lệnh để tạo các giao số của số nguyên. 3. In các ước số của số. 4. Thoát.
2. Use a for loop and if statement to generate the divisors of the integer.
3. Print the divisors of the number.
4. Exit.

Chương trình/mã nguồn

Dưới đây là mã nguồn của chương trình Python để tạo ra tất cả các ước số của một số nguyên. Đầu ra chương trình cũng được hiển thị dưới đây.

 
n=int(input("Enter an integer:"))
print("The divisors of the number are:")
for i in range(1,n+1):
    if(n%i==0):
        print(i)

Giải thích chương trình

1. Trước tiên, người dùng phải nhập giá trị và lưu trữ nó trong một biến. 2. Sử dụng một vòng lặp để tạo số từ 1 đến n. 3. Sử dụng kiểm tra câu lệnh IF nếu số chia cho I cho phần còn lại là 0, về cơ bản là chia của số nguyên. 4. In các ước số của số.
2. Use a for loop to generate numbers from 1 to n.
3. Using an if statement check if the number divided by i gives the remainder as 0 which is basically the divisor of the integer.
4. Print the divisors of the number.

Trường hợp kiểm tra thời gian chạy

 
Case 1:
Enter an integer:25
The divisors of the number are:
1
5
25
 
Case 2:
Enter an integer:20
The divisors of the number are:
1
2
4
5
10
20

Sê -ri Giáo dục & Học tập toàn cầu Sanfoundry - Chương trình Python.

Để thực hành tất cả các chương trình Python, đây là bộ hoàn thành hơn 150 vấn đề và giải pháp Python.

Bước tiếp theo:

  • Nhận Giấy chứng nhận miễn phí trong chương trình Python
  • Tham gia cuộc thi chứng nhận lập trình Python
  • Trở thành một người xếp hạng hàng đầu trong chương trình Python
  • Thực hiện các bài kiểm tra lập trình Python
  • Các bài kiểm tra thực hành theo chương: Chương 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10
  • Các bài kiểm tra giả chương: Chương 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10,

Hướng dẫn python divisors of a number - ước số python của một số

Manish Bhojasia, một cựu chiến binh công nghệ với hơn 20 năm @ Cisco & Wipro, là người sáng lập và CTO tại Sanfoundry. Ông sống ở Bangalore, và tập trung vào sự phát triển của nhân Linux, Công nghệ San, Cvanced C, Cấu trúc dữ liệu & Alogrithms. Giữ kết nối với anh ta tại LinkedIn.Sanfoundry. He lives in Bangalore, and focuses on development of Linux Kernel, SAN Technologies, Advanced C, Data Structures & Alogrithms. Stay connected with him at LinkedIn.

Đăng ký các lớp học chính miễn phí của mình tại YouTube & Thảo luận kỹ thuật tại Telegram SanfoundryClasses.

  • Xây dựng vấn đề
  • Phương pháp 1: Cách tiếp cận ngây thơ
  • Phương pháp 2: Giảm số lần lặp lại vòng lặp
  • Lập trình viên hài hước - Blockchain
  • Đi đâu từ đây?

Xây dựng vấn đề

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

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

Cho một số nguyên n.

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ơ

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 quan sát này trong hàm

 
n=int(input("Enter an integer:"))
print("The divisors of the number are:")
for i in range(1,n+1):
    if(n%i==0):
        print(i)
4. Chúng tôi tạo một danh sách trống ban đầu
 
n=int(input("Enter an integer:"))
print("The divisors of the number are:")
for i in range(1,n+1):
    if(n%i==0):
        print(i)
5 và kiểm tra mọi số nguyên
 
n=int(input("Enter an integer:"))
print("The divisors of the number are:")
for i in range(1,n+1):
    if(n%i==0):
        print(i)
0 trong khoảng từ 0 đến
 
n=int(input("Enter an integer:"))
print("The divisors of the number are:")
for i in range(1,n+1):
    if(n%i==0):
        print(i)
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 python divisors of a number - ước số python của một số

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

 
n=int(input("Enter an integer:"))
print("The divisors of the number are:")
for i in range(1,n+1):
    if(n%i==0):
        print(i)
7. Nếu số N trở nên lớn như
 
Case 1:
Enter an integer:25
The divisors of the number are:
1
5
25
 
Case 2:
Enter an integer:20
The divisors of the number are:
1
2
4
5
10
20
0, chúng ta cần kiểm tra mọi số
 
Case 1:
Enter an integer:25
The divisors of the number are:
1
5
25
 
Case 2:
Enter an integer:20
The divisors of the number are:
1
2
4
5
10
20
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ố

 
Case 1:
Enter an integer:25
The divisors of the number are:
1
5
25
 
Case 2:
Enter an integer:20
The divisors of the number are:
1
2
4
5
10
20
4 phải là một số nguyên và một ước số của n
 
Case 1:
Enter an integer:25
The divisors of the number are:
1
5
25
 
Case 2:
Enter an integer:20
The divisors of the number are:
1
2
4
5
10
20
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ố
 
Case 1:
Enter an integer:25
The divisors of the number are:
1
5
25
 
Case 2:
Enter an integer:20
The divisors of the number are:
1
2
4
5
10
20
8 vào danh sách các ước số.
If number
 
n=int(input("Enter an integer:"))
print("The divisors of the number are:")
for i in range(1,n+1):
    if(n%i==0):
        print(i)
0 is a divisor of n, number
 
Case 1:
Enter an integer:25
The divisors of the number are:
1
5
25
 
Case 2:
Enter an integer:20
The divisors of the number are:
1
2
4
5
10
20
4 must be an integer and a divisor of n as well because
 
Case 1:
Enter an integer:25
The divisors of the number are:
1
5
25
 
Case 2:
Enter an integer:20
The divisors of the number are:
1
2
4
5
10
20
6. This means that each time we find a divisor
 
n=int(input("Enter an integer:"))
print("The divisors of the number are:")
for i in range(1,n+1):
    if(n%i==0):
        print(i)
0, we can also add the divisor
 
Case 1:
Enter an integer:25
The divisors of the number are:
1
5
25
 
Case 2:
Enter an integer:20
The divisors of the number are:
1
2
4
5
10
20
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 python divisors of a number - ước số python của một số
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 python divisors of a number - ước số python của một số

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ìm thấy các ước số của một số?

Phương pháp cơ bản nhất để tính toán các phân chia là bộ phận thử nghiệm đầy đủ. Nếu chúng ta muốn tìm các ước số tích cực cho một số nguyên n, chúng ta chỉ cần lấy số nguyên 1, 2, 3,. . . , n, chia n cho mỗi cái và những người chia đều tạo nên tập hợp các ước số tích cực cho n.exhaustive trial division. If we want to find the positive divisors for an integer n, we just take the integers 1, 2, 3, . . . , n, divide n by each, and those that divide evenly make up the set of positive divisors for n.

Làm cách nào để thêm tất cả các ước số vào một 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ìm thấy các ước số của một số trong Python trong khi vòng lặp?

Giải trình :..
Khởi tạo một biến I là 1 khi bắt đầu phương pháp này ..
Sử dụng một vòng trong khi lặp, lặp lại cho đến khi tôi nhỏ hơn N+1 ..
Kiểm tra xem giá trị hiện tại có phải là một chia của N hay không.Nếu có, hãy in ra giá trị ..
Tăng giá trị của tôi ..

Danh sách các ước số từ 1 đến 100 là gì?

Ví dụ: Các số thiếu đầu tiên là: 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 21, 22, 23, 25, 26,27, 29, 31, 32, 33, 34, 35, 37, 38, 39, 41, 43, 44, 45, 46, 47, 49, 50, v.v.1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 21, 22, 23, 25, 26, 27, 29, 31, 32, 33, 34, 35, 37, 38, 39, 41, 43, 44, 45, 46, 47, 49, 50, etc.