Làm thế nào để bạn tìm thấy các thừa số của một số trong danh sách python?

Có một số cách để tìm và in các thừa số của một số, cách đầu tiên là lặp qua từng số cho đến 'N' và kiểm tra bằng cách chia nó xem nó có chia hết cho nó hay không. Đây là một cách tiếp cận ngây thơ và mất nhiều thời gian cho các giá trị rất lớn của 'N'. Cách tiếp cận hiệu quả và tốt hơn là lặp qua bình phương của số 'N' (đã bao gồm) nếu 'N' không chẵn i. e. lẻ khác độc quyền (bạn sẽ biết ngay). Cách tiếp cận này làm giảm độ phức tạp của O(n) thành O(√n). Hãy bắt đầu với việc tìm thừa số của một số N trong Python3

Tìm thừa số của một số trong Python

Đầu tiên, hãy thử sử dụng cách tiếp cận ngây thơ

N=int(input()) 
factors=[1] 
for i in range(2,N):
   if(N%i==0): 
      factors.append(i) 
factors.append(N) 
print(factors)
Output:
24
[1, 2, 3, 4, 6, 8, 12, 24]

Độ phức tạp thời gian=O(n)

cách tiếp cận hiệu quả

Một cách tiếp cận hiệu quả để tìm các thừa số của số N. Kiểm tra xem số đó có phải là số chính phương hay không và thay vì lặp từ 1 đến N, lặp lại đến căn bậc hai (N). Ý tưởng là tìm mô đun của N và kiểm tra xem nó có chia hết hay không, nếu có, hãy bao gồm ước số trong danh sách thừa số cũng như thương trong danh sách thừa số. Vấn đề phát sinh nếu số dường như là một hình vuông hoàn hảo, chúng tôi sẽ nhận được các bản sao tại thời điểm này bằng cách sử dụng cùng một cách tiếp cận, ví dụ:. lấy N=36 bây giờ cho 6 nó chia hết nên nó cũng sẽ thêm thương 6 và sẽ có hai số 6 và chúng tôi không muốn điều này do đó chúng tôi không bao gồm căn bậc hai (N) trong phép lặp. Lưu ý hai điểm dưới đây

  • Nếu N không phải là số chính phương lặp qua căn bậc hai(N)+1
  • Nếu không lặp qua căn bậc hai (N)

Chúng tôi cũng có thể sử dụng set để lưu trữ các yếu tố nhưng sau đó sẽ có nhiều lần lặp hơn +1 so với sử dụng danh sách do đó tôi khuyên bạn nên sử dụng phương pháp này

Việc triển khai python 3 cho phương pháp trên được đưa ra bên dưới, nhưng tôi khuyên tất cả các bạn nên tự mình thử cách này và sau đó xem mã để hỗ trợ nếu bạn gặp khó khăn

Bài viết này được tạo ra để đề cập đến một số chương trình trong Python, để tìm và in các thừa số của một số do người dùng nhập vào trong thời gian chạy. Dưới đây là danh sách các phương pháp được sử dụng

  • Tìm thừa số của một số bằng vòng lặp while
  • Sử dụng cho vòng lặp
  • Sử dụng chức năng

Lưu ý - Thừa số của một số nói n là số chia hết cho số (n). Ví dụ, thừa số của 12 là 1, 2, 3, 4, 6, 12. Sáu số này chia hết cho 12 không chừa số dư

Tìm thừa số của một số bằng vòng lặp while

Để tìm thừa số của bất kỳ số nào trong Python, bạn phải yêu cầu người dùng nhập một số, sau đó tìm và in ra thừa số của nó như trong chương trình dưới đây. Câu hỏi đặt ra là viết chương trình Python tìm thừa số của một số bằng vòng lặp while. Đây là câu trả lời của nó

print("Enter the Number: ")
num = input()

num = int(num)
print("\nFactors of", num)

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

Đây là đầu ra ban đầu được tạo bởi chương trình Python này

find factors of number python

Bây giờ cung cấp đầu vào nói 12 và nhấn phím ENTER để tìm và in tất cả các thừa số của 12 như trong ảnh chụp nhanh bên dưới

factors of number python

Quá trình chạy khô khan của chương trình trên với đầu vào của người dùng 12, diễn ra như sau

  • Giá trị ban đầu, num="12" (do người dùng nhập). Trong Python, mọi thứ nhận được bằng input() được coi là giá trị kiểu chuỗi. Do đó, sử dụng tuyên bố sau.
    ______8
    giá trị của num được chuyển thành giá trị kiểu số nguyên. Vậy num=12 và i=1
  • Bây giờ điều kiện (của vòng lặp while) i<=num hoặc 1<=12 được đánh giá là đúng, do đó luồng chương trình sẽ đi vào bên trong vòng lặp
  • Bên trong vòng lặp, điều kiện (của if) num%i==0 hoặc 12%1==0 hoặc 0==0 được đánh giá là đúng, do đó, luồng chương trình đi vào bên trong phần thân của if này và giá trị của i được in dưới dạng một
  • Bây giờ giá trị của tôi được tăng thêm 1. Vì vậy, bây giờ tôi = 2
  • Một lần nữa, điều kiện của vòng lặp while được đánh giá. Đó là điều kiện i<=num hoặc 2<=12 đánh giá là đúng một lần nữa, do đó luồng chương trình lại đi vào bên trong vòng lặp
  • Bên trong vòng lặp, điều kiện (của if) num%i==0 hoặc 12%2==0 hoặc 0==0 lại được đánh giá là đúng, do đó, luồng chương trình lại đi vào bên trong phần thân của nó và giá trị của i được in dưới dạng
  • Giá trị của i được tăng lên. Vì vậy, tôi = 3. Bây giờ điều kiện của vòng lặp while lại được đánh giá. Lần này điều kiện cũng được đánh giá là đúng, do đó luồng chương trình đi vào bên trong vòng lặp
  • Quá trình này tiếp tục cho đến khi điều kiện đánh giá là sai
  • Bằng cách này, tất cả các thừa số của 12 (số do người dùng cung cấp) được in ra, từng cái một

Phiên bản sửa đổi của chương trình trước đó

Đây là phiên bản sửa đổi của chương trình trước đó. Chương trình này sử dụng end để bỏ qua việc chèn một dòng mới tự động bằng print(). Hàm str() được sử dụng để chuyển đổi giá trị thành kiểu chuỗi. Try-ngoại trừ được sử dụng để xử lý đầu vào không hợp lệ

print("Enter a Number: ", end="")
try:
    num = int(input())

    print("\nFactors of " +str(num)+ " are: ", end="")
    i = 1
    while i<=num:
        if num % i == 0:
            print(i, end=" ")
        i = i + 1
    print()
except ValueError:
    print("\nInvalid Input!")

Đây là mẫu chạy với đầu vào của người dùng 42

print factors of number python

Đây là một mẫu khác chạy với đầu vào người dùng không hợp lệ nói 23. 4

python find factors of number

Tìm thừa số của một số bằng for Loop

Chương trình này thực hiện công việc tương tự như chương trình trước, nhưng chương trình này được tạo bằng vòng lặp for, thay vì vòng lặp while. Trước tiên chúng ta hãy xem chương trình

print("Enter a Number: ", end="")
try:
    num = int(input())

    print("\nFactors of " +str(num)+ " are: ", end="")
    for i in range(1, num+1):
        if num % i == 0:
            print(i, end=" ")
    print()
except ValueError:
    print("\nInvalid Input!")

Trong chương trình trên, đoạn mã sau

nói rằng câu lệnh bên trong nó, được thực thi vô số lần với giá trị i từ 1 đến num. Ví dụ: nếu giá trị của num là 12, thì vòng lặp được đánh giá 12 lần với giá trị của i từ 1 đến 12

Tìm thừa số của một số bằng hàm

Chương trình này được tạo bằng hàm do người dùng định nghĩa có tên FindFact(). Hàm này nhận số do người dùng nhập làm đối số và in tất cả các thừa số của nó từ bên trong hàm này

def FindFact(n):
    for i in range(1, n+1):
        if n % i == 0:
            print(i, end=" ")
    print()

print("Enter a Number: ", end="")
try:
    num = int(input())
    print("\nFactors of " +str(num)+ " are: ", end="")
    FindFact(num)
except ValueError:
    print("\nInvalid Input!")

Chương trình này tạo ra đầu ra chính xác giống như chương trình trước

Tìm thừa số của một số bằng Class

Đây là chương trình cuối cùng, được tạo bằng lớp, một tính năng hướng đối tượng của Python

class CodesCracker:
    def FindFact(self, n):
        for i in range(1, n+1):
            if n % i == 0:
                print(i, end=" ")

print("Enter a Number: ", end="")
try:
    num = int(input())
    print("\nFactors of " +str(num)+ " are: ", end="")
    ob = CodesCracker()
    ob.FindFact(num)
    print()
except ValueError:
    print("\nInvalid Input!")

Để truy cập hàm thành viên có tên FindFact() của một lớp có tên CodesCracker, cần có một đối tượng của lớp này. Do đó, một đối tượng ob được tạo từ lớp CodesCracker và sử dụng. (dấu chấm), tôi đã truy cập hàm thành viên của lớp như trong chương trình đã cho ở trên