Hướng dẫn dùng python isprime python
answer 100 Trong số nhiều bài kiểm tra số nguyên tố trôi nổi trên Internet, hãy xem xét hàm Python sau:
Vì tất cả các số nguyên tố> 3 đều có dạng 6n ± 1,
một khi chúng ta loại bỏ nó
Xét số nguyên tố 5003:
Bản in:
Dòng có Hãy xem xét số lẻ tiếp theo (vì tất cả các số chẵn khác 2 không phải là số nguyên tố) của 5005, điều tương tự in ra:
Giới hạn là căn bậc hai vì Bây giờ, hãy xem xét thuật toán mà bạn có:
Có hai vấn đề:
Vì thế:
OK - điều đó tăng tốc khoảng 30% (tôi đã đánh giá nó ...) Thuật toán tôi đã sử dụng Lưu ý: x ** 0,5 là căn bậc hai:
Lưu ý 2: Kiểm tra tính nguyên sơ là một vấn đề thú vị trong khoa học máy tính. 100 hữu ích 5 bình luận chia sẻ answer 21 Với Hãy xem xét các số 20; các thừa số nguyên là 1, 2, 4, 5, 10 và 20. Khi bạn chia 20 cho 2 và được 10, bạn biết rằng nó cũng chia hết cho 10 mà không cần phải kiểm tra. Khi bạn chia cho 4 và được 5, bạn biết nó chia hết cho cả 4 và 5 mà không cần phải kiểm tra lại cho 5. Sau khi đạt đến nửa điểm này trong các yếu tố, bạn sẽ không còn số để kiểm tra xem bạn chưa nhận ra yếu tố nào trước đó. Do đó, bạn chỉ cần đi một nửa để xem một cái gì đó có phải là số nguyên tố hay không, và điểm nửa chừng này có thể được tìm thấy bằng cách lấy căn bậc hai của số đó. Ngoài ra, lý do 1 không phải là số nguyên tố là vì số nguyên tố được định nghĩa là có 2 thừa số, 1 và chính nó. tức là 2 là 1 * 2, 3 là 1 * 3, 5 là 1 * 5. Nhưng 1 (1 * 1) chỉ có 1 yếu tố, chính nó. Do đó, nó không đáp ứng định nghĩa này. 21 hữu ích 1 bình luận chia sẻ answer 13 Không có hoạt động dấu chấm động nào được thực hiện bên dưới. Điều này nhanh hơn và sẽ chịu được các đối số cao hơn. Lý do bạn chỉ phải đi đến căn bậc hai là nếu một số có thừa số lớn hơn căn bậc hai của nó, nó cũng có thừa số nhỏ hơn nó.
13 hữu ích 5 bình luận chia sẻ answer 13 Câu hỏi đã được hỏi một chút trước đây, nhưng tôi có một giải pháp ngắn hơn cho bạn
Phép toán hầu hết sẽ trả về 2 nếu số là số nguyên tố, thay vì 2. Nhưng nếu 2 là số đã cho, nó sẽ được thêm vào danh sách mà chúng ta đang xem xét. Ví dụ:
Ví dụ về bộ đếm:
isNotPrime () trả về giá trị True nếu Number không phải là số nguyên tố. 13 hữu ích 5 bình luận chia sẻ answer 6 Phương pháp này sẽ chậm hơn phương pháp đệ quy và liệt kê ở đây, nhưng sử dụng định lý Wilson và chỉ là một dòng duy nhất:
6 hữu ích 0 bình luận chia sẻ answer 4 Tìm căn bậc hai của một số là cho hiệu quả. ví dụ. Nếu tôi đang cố gắng tìm thừa số của 36, số cao nhất có thể nhân với chính nó để tạo thành 36 là 6. 7 * 7 = 49. do đó mọi thừa số của 36 phải được nhân với 6 hoặc một số nhỏ hơn. 4 hữu ích 0 bình luận chia sẻ answer 4
4 hữu ích 2 bình luận chia sẻ answer 2 Mọi mã bạn viết phải hiệu quả. Đối với một người mới bắt đầu như bạn, cách dễ nhất là kiểm tra tính chia hết của số 'n' từ 2 đến (n-1) . Điều này mất rất nhiều thời gian khi bạn xem xét những con số rất lớn. Phương pháp căn bậc hai giúp chúng tôi tạo mã nhanh hơn bởi số lượng phép so sánh ít hơn. Đọc về sự phức tạp trong Thiết kế và Phân tích Thuật toán. 2 hữu ích 1 bình luận chia sẻ answer 2 Tôi không biết mình có đến muộn không nhưng tôi sẽ để nó ở đây để giúp ai đó trong tương lai. Chúng tôi sử dụng căn bậc hai của (n) tức là int (n ** 0,5) để giảm phạm vi số mà chương trình của bạn sẽ buộc phải tính toán. Ví dụ, chúng ta có thể thực hiện phép chia thử để kiểm tra tính nguyên thủy của 100. Hãy xem xét tất cả các ước của 100: 2, 4, 5, 10, 20, 25, 50 Ở đây ta thấy thừa số lớn nhất là 100/2 = 50. Điều này đúng với mọi n: tất cả các ước đều nhỏ hơn hoặc bằng n / 2. Nếu chúng ta xem xét kỹ hơn các ước số, chúng ta sẽ thấy rằng một số trong số chúng là dư thừa. Nếu chúng ta viết danh sách theo cách khác: 100 = 2 × 50 = 4 × 25 = 5 × 20 = 10 × 10 = 20 × 5 = 25 × 4 = 50 × 2 thì sự dư thừa trở nên hiển nhiên. Khi chúng ta đạt đến 10, tức là √100, các ước số chỉ cần lật lại và lặp lại. Do đó, chúng ta có thể loại bỏ thêm ước số thử nghiệm lớn hơn √n. Lấy một số khác như 16. Các ước của nó là, 2,4,8 16 = 2 * 8, 4 * 4, 8 * 2. Bạn có thể lưu ý rằng sau khi đạt đến 4, là căn bậc hai của 16, chúng tôi lặp lại 8 * 2 mà chúng tôi đã thực hiện là 2 * 8. Mô hình này đúng cho tất cả các số. Do đó, để tránh lặp lại chính mình, chúng tôi kiểm tra tính nguyên thủy lên đến căn bậc hai của một số n. Vì vậy, chúng tôi chuyển đổi căn bậc hai thành int vì chúng tôi không muốn một phạm vi có số thực. Đọc bài kiểm tra tính nguyên thủy trên wikipedia để biết thêm thông tin. 2 hữu ích 0 bình luận chia sẻ answer 2 Đây là phương pháp của tôi:
Để trả lời câu hỏi ban đầu, n ** 0,5 bằng với bình phương của n . Bạn có thể ngừng kiểm tra các thừa số sau số này vì một số tổng hợp sẽ luôn có một thừa số nhỏ hơn hoặc bằng căn bậc hai của nó. Điều này nhanh hơn so với việc chỉ kiểm tra tất cả các thừa số từ 2 đến n cho mọi n, bởi vì chúng tôi kiểm tra số lượng ít hơn, điều này giúp tiết kiệm nhiều thời gian hơn khi n lớn lên. 2 hữu ích 0 bình luận chia sẻ answer 2
==============================================
2 hữu ích 2 bình luận chia sẻ answer 1
và đây là cách sử dụng nó
Để tìm tất cả các số nguyên tố, bạn có thể sử dụng:
Lưu ý rằng 5, trong trường hợp này, biểu thị số lượng các số nguyên tố được tìm thấy và 4000 phạm vi tối đa của các số nguyên tố sẽ được tìm kiếm. 1 hữu ích 0 bình luận chia sẻ answer 1
1 hữu ích 2 bình luận chia sẻ answer 1 Đã triển khai mã giả ( https://en.wikipedia.org/wiki/Primality_test ) trong python, hy vọng điều này sẽ giúp ích cho bạn.
1 hữu ích 2 bình luận chia sẻ answer 0
Bây giờ, vì Vì đó là trường hợp, đủ tốt để lặp lại các số nguyên trong phạm vi Nếu bạn muốn trở thành một smartass thực sự, hãy sử dụng hàm một lớp lót sau:
Có thể tìm thấy lời giải thích cho "ma thuật regex" tại đây 0 hữu ích 4 bình luận chia sẻ answer 0 Đây là
Đây là hiệu suất:
0 hữu ích 1 bình luận chia sẻ answer 0
0 hữu ích 1 bình luận chia sẻ answer 0 Đó là một bài tập trong codecademy và đó là cách tôi vượt qua nó dưới đây ...
0 hữu ích 0 bình luận chia sẻ answer 0
0 hữu ích 1 bình luận chia sẻ answer -1 Khá đơn giản!
-1 hữu ích 0 bình luận chia sẻ answer -1 Đây là của tôi
-1 hữu ích 1 bình luận chia sẻ answer -1
Đúng nếu số là số nguyên tố, ngược lại là sai -1 hữu ích 0 bình luận chia sẻ answer -1 Số 1 là một trường hợp đặc biệt không được coi là số nguyên tố cũng không phải là hợp số. Để biết thêm thông tin, hãy truy cập: http://mathworld.wolfram.com/PrimeNumber.html Và, (n ** 0,5) -> Điều này sẽ cho chúng ta " căn bậc hai " của 'n'. Vì nó là "n được nâng lên thành lũy thừa 0,5 hoặc 1/2" Và TẠI SAO chúng ta làm điều đó, Lấy ví dụ số 400: Chúng ta có thể biểu diễn nó dưới dạng a * b
Căn bậc hai của 400 là 20: và chúng ta có thể thấy rằng chúng ta chỉ cần kiểm tra tính chia hết cho đến 20 bởi vì, khi 'a' đến 20 'b' bắt đầu giảm ... Vì vậy, cuối cùng chúng ta đang kiểm tra tính chia hết với các số nhỏ hơn căn bậc hai. -1 hữu ích 0 bình luận chia sẻ answer -1 Tôi có một giải pháp mới mà tôi nghĩ có thể nhanh hơn bất kỳ Hàm nào được đề cập trong Python Nó dựa trên ý tưởng rằng: N / D = R với bất kỳ số N tùy ý nào, số nhỏ nhất có thể để chia N (nếu không phải là số nguyên tố) là D = 2 và kết quả tương ứng R là (N / 2) (cao nhất). Khi D lớn hơn kết quả R nhỏ hơn ví dụ: chia cho D = 3 kết quả R = (N / 3) vì vậy khi chúng ta kiểm tra xem N có chia hết cho D hay không, chúng ta cũng đang kiểm tra xem nó có chia hết cho R không vì vậy D lớn hơn và R nhỏ hơn cho đến (D == R == căn bậc hai (N)) thì chúng ta chỉ cần kiểm tra các số từ 2 đến sqrt (N) một mẹo khác để tiết kiệm thời gian, chúng ta chỉ cần kiểm tra các số lẻ vì nó là số chia hết cho số chẵn thì nó cũng sẽ chia hết cho 2. vì vậy dãy sẽ là 3,5,7,9, ......, sqrt (N).
-1 hữu ích 0 bình luận chia sẻ answer -1
-1 hữu ích 0 bình luận chia sẻ answer -3
-3 hữu ích 0 bình luận chia sẻ answer -4 Srsly guys ... Tại sao rất nhiều dòng mã cho một phương pháp đơn giản như thế này? Đây là giải pháp của tôi:
-4 hữu ích 1 bình luận chia sẻ |