Làm thế nào để bạn biết nếu một số là số nguyên tố trong python?
Nếu số tự nhiên lớn hơn 1 và không có ước dương nào khác ngoài 1 và chính số đó, v.v. Show
Ví dụ. 3, 7, 11 là các số nguyên tố Hợp số Các số tự nhiên khác không phải là số nguyên tố được gọi là hợp số Ví dụ. 4, 6, 9, v.v. là hợp số Chúng ta hãy xem ví dụ sau để hiểu việc thực hiện Ví dụđầu ra Enter an input number:17 17 is a prime number Giải trình Chúng ta đã sử dụng điều kiện if lồng nhau để kiểm tra xem một số có phải là số nguyên tố hay không Đầu tiên, chúng tôi đã kiểm tra xem số đã cho có lớn hơn 1 hay không. Nếu nó không lớn hơn 1, thì số đó sẽ trực tiếp đến phần khác và in ra 'không phải là số nguyên tố. ' Bây giờ, số sẽ nhập vào vòng lặp for nơi chúng tôi thực hiện Lặp lại từ 2 đến số/2. Sau đó, chúng ta sử dụng điều kiện if lồng nhau bên trong vòng lặp for. Nếu số đó chia hết cho 'i' thì đó không phải là số nguyên tố; Số nguyên tố là số tự nhiên lớn hơn 1 không là tích của hai số tự nhiên bé hơn. Số nào lớn hơn 1 và chỉ có hai ước là 1 và chính nó thì được gọi là số nguyên tố Giả sử sau đây là đầu vào của chúng tôi - 7 Đầu ra phải như sau - Prime Number Kiểm tra xem một số có phải là số nguyên tố hay khôngHãy để chúng tôi kiểm tra xem một số có phải là số Nguyên tố hay không bằng cách sử dụng vòng lặp for – Ví dụđầu ra5 is a prime number Kiểm tra xem một số có phải là Prime hay không bằng cách sử dụng sqrt()Hãy để chúng tôi kiểm tra xem một số có phải là số Nguyên tố hay không bằng cách sử dụng phương thức sqrt() - Ví dụđầu ra9 is Not a Prime Number! Nếu bạn đã từng làm các bài kiểm tra mã hóa, bạn sẽ bắt gặp câu hỏi toán học trong bài kiểm tra tính nguyên tố hoặc kiểm tra xem một số có phải là số nguyên tố hay không. Và trong vài phút tới, bạn sẽ học cách đưa ra giải pháp tối ưu cho câu hỏi này Trong hướng dẫn này, bạn sẽ
Đối với tất cả những điều này và hơn thế nữa, hãy bắt đầu Một số nguyên tố là gì?Hãy bắt đầu bằng cách xem xét các khái niệm cơ bản về số nguyên tố
Bảng sau đây liệt kê một vài số, tất cả các thừa số của chúng và nếu chúng là số nguyên tố nThừa sốLà số nguyên tố?11Không21, 2Có31, 3Có41, 2, 4Không71, 7Có151, 3, 5, 15KhôngTừ bảng trên, chúng ta có thể viết ra những điều sau đây
Vì vậy, 1 và n là các yếu tố tầm thường cho bất kỳ số n. Và một số nguyên tố không được có ước số nào khác ngoài hai ước số này Điều này có nghĩa là khi bạn đi từ 2 đến n – 1, bạn sẽ không thể tìm thấy một thừa số không tầm thường chia n mà không có phần dư Thuật toán O(n) để kiểm tra xem một số có phải là số nguyên tố trong Python khôngTrong phần này, chúng ta hãy chính thức hóa cách tiếp cận trên thành một hàm Python Bạn có thể lặp qua tất cả các số từ 2 đến n – 1 bằng cách sử dụng đối tượng
Vì chúng tôi cần tập hợp các số nguyên từ 2 đến n-1, chúng tôi có thể chỉ định 4 và sử dụng nó cùng với vòng lặp 5Đây là những gì chúng tôi muốn làm
Hàm Python để kiểm tra số nguyên tốSử dụng cách trên, chúng ta có thể tiếp tục và định nghĩa hàm 6 như sau
Bây giờ chúng ta hãy phân tích định nghĩa hàm trên
Tiếp theo, hãy gọi hàm với các đối số và xác minh xem đầu ra có đúng không
Trong kết quả ở trên, bạn thấy rằng 2 và 11 là số nguyên tố (hàm trả về 9). Và 8 và 9 không phải là số nguyên tố (hàm trả về 8)Cách tối ưu hóa hàm is_prime() của PythonChúng ta có thể thực hiện một tối ưu hóa nhỏ tại đây. Quan sát danh sách các yếu tố trong bảng dưới đây Hệ Số61, 2, 3, 6101, 2, 5, 10181, 2, 3, 6, 9, 18
Vì vậy, điều này có nghĩa là bạn không cần phải lặp đến n – 1. Thay vào đó, bạn chỉ có thể chạy vòng lặp tối đa n/2 Nếu bạn không tìm thấy một yếu tố không tầm thường cho đến n/2, thì bạn cũng không thể tìm thấy một yếu tố vượt quá n/2 Bây giờ, hãy sửa đổi hàm 6 để kiểm tra các thừa số trong phạm vi (2, n/2)
Hãy tiếp tục và xác minh đầu ra thông qua một vài lời gọi hàm
Mặc dù có vẻ như chúng tôi đã tối ưu hóa, nhưng thuật toán này không hiệu quả hơn thuật toán trước về độ phức tạp của thời gian chạy. Trên thực tế, cả hai đều có độ phức tạp thời gian chạy O(n). tỷ lệ thuận với giá trị của n hoặc tuyến tính theo n Chúng ta có thể làm tốt hơn không? ▶️ Chuyển sang phần tiếp theo để xác định cách cải thiện độ phức tạp về thời gian cho kiểm tra số nguyên tố Thuật toán O(√n) để kiểm tra số nguyên tố trong PythonNó xảy ra rằng các yếu tố của một số xảy ra theo cặp
Hãy xác minh điều này thông qua một ví dụ Bảng dưới đây cho thấy các yếu tố của số 18 xảy ra theo cặp. Bạn có thể xác minh tương tự cho một vài số khác nếu bạn muốn Ngoài ra, lưu ý rằng √18 xấp xỉ 4. 24 Và trong các thừa số xảy ra theo cặp (a, b), bạn có thể thấy rằng nếu a nhỏ hơn 4. 24 thì b lớn hơn 4. 24—trong ví dụ này, (2, 18) và (3, 6) Thừa số của 18 theo cặpHình dưới đây cho thấy các thừa số của 18 được vẽ trên trục số Nếu số n là số chính phương, bạn sẽ có a = b = √n là một trong các thừa số ▶️ Hãy xem các thừa số của 36 trong bảng bên dưới. Vì 36 là số chính phương nên a = b = 6 là một trong các thừa số. Đối với tất cả các cặp nhân tố khác (a, b), a < 6 và b > 6 đúng Thừa số của 36 theo cặpTóm lại, chúng tôi có những điều sau đây
Vì vậy, thay vì lặp qua tất cả các số nguyên lên tới n/2, bạn có thể chọn chạy tới √n. Và điều này hiệu quả hơn rất nhiều so với cách tiếp cận trước đây của chúng tôi Cách sửa đổi thuật toán is_prime() thành O(√n)Tiến hành tối ưu hàm kiểm tra số nguyên tố trong Python
Bây giờ, hãy phân tích cú pháp định nghĩa hàm trên
Ô mã bên dưới xác minh rằng chức năng của chúng tôi 6 hoạt động chính xác
Trong phần tiếp theo, chúng ta hãy tạo một vài biểu đồ đơn giản để hiểu O(n) và O(√n) một cách trực quan So sánh trực quan O(n) và O(√n)▶️ Chạy đoạn mã sau trong môi trường máy tính xách tay Jupyter mà bạn chọn
Đoạn mã trên cho thấy cách bạn có thể vẽ các đường cong cho n và √n cho một dải giá trị
Từ biểu đồ bên dưới, chúng ta thấy rằng √n nhỏ hơn đáng kể so với n Bây giờ chúng ta hãy tăng phạm vi lên cao nhất là 2000 và lặp lại các bước tương tự như trên
Từ biểu đồ trên, bạn có thể suy ra rằng thuật toán O(√n) nhanh hơn đáng kể khi bạn kiểm tra xem một số lớn có phải là số nguyên tố hay không. Đây là một ví dụ nhanh. 2377 là số nguyên tố—hãy xác minh điều này. 😀 Trong khi cách tiếp cận O(n) sẽ thực hiện theo thứ tự 2000 bước, thuật toán O(√n) có thể giúp đi đến câu trả lời chỉ sau 49 bước. ✅ Phần kết luận⏳ Và đã đến lúc tóm tắt nhanh
Tôi hy vọng bạn hiểu cách kiểm tra xem một số có phải là số nguyên tố trong Python không. Bước tiếp theo, bạn có thể xem hướng dẫn của chúng tôi về các chương trình Python về thao tác chuỗi—nơi bạn sẽ học cách kiểm tra xem các chuỗi có phải là palindromes, đảo chữ cái, v.v. |