Sàng eratosthenes trong python là gì?

Hãy viết mã thuật toán Sàng của Eratosthenes cho các số nguyên tố bằng Python. Chúng tôi sẽ sử dụng Python 3. 8. 10. Đi nào. ⚡⚡✨✨

quảng cáo

Eratosthenes là một nhà toán học sống ở Hy Lạp cổ đại. Sàng của Eratosthenes là một thuật toán do ông phát triển cho phép chúng ta, ngay cả ngày nay, tìm một cách hiệu quả các số nguyên tố nhỏ hơn bất kỳ số nguyên n nào. Đây là mã của chúng tôi

def esieve[n]:
    multiples = []
    for i in range[2, n+1]:
        if i not in multiples:
            print[i]
            for j in range[i*i, n+1, i]:

                multiples.append[j]

esieve[17]

#Output
#2
#3
#5
#7
#11
#13
#17

Hãy giải thích những gì đang xảy ra ở đây

  1. Chức năng của chúng tôi esieve[] là những gì sẽ thực sự thực hiện thuật toán Sàng của Eratosthenes. Nó nhận một đối số n và sẽ in ra tất cả các số nguyên tố nhỏ hơn hoặc bằng n. Đây là các bước
    • chúng tôi khai báo một danh sách mới bội số
    • chúng tôi tạo một danh sách các số nguyên từ 2 đến n+1
    • bắt đầu từ i=2, chúng tôi “đánh dấu” tất cả các bội số của i trong danh sách bằng cách chèn từng bội số vào bội số của danh sách, tối đa là n+1 Quảng cáo
    • mỗi khi kết thúc vòng lặp này ta kiểm tra xem i có nằm trong danh sách bội số không, nếu không là số nguyên tố và in ra màn hình
    • sau đó chúng ta tăng đến i=3 và chạy lại tất cả các số, mỗi lần chèn bội số của i vào bội số danh sách của chúng ta và kiểm tra xem sau khi hoàn thành vòng lặp, nó có nằm trong bội số của danh sách không
    • chúng tôi tiến hành bằng cách tăng i theo cách này và thực hiện việc “đánh dấu” này cho đến khi n+1 tại thời điểm đó quá trình hoàn tất và sàng đã hoàn thành công việc của nó
  2. Chúng tôi đã sửa đổi sàng để bao gồm các số nguyên tố lên đến và bao gồm n

Đơn giản phải không? . Các giải pháp khác trông thanh lịch hơn nhưng chúng không thể đọc được

quảng cáo

Tìm hiểu thêm về thuật toán này TẠI ĐÂY. Và xem hướng dẫn tuyệt vời khác của chúng tôi TẠI ĐÂY. Cảm ơn vì đã đọc. Chúc may mắn. 👌👌👌

Sàng của Eratosthenes là một thuật toán rất phổ biến để lấy

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
9 bên dưới một số đã cho. Con số này chắc chưa đến chục triệu

Thuật toán đơn giản dễ hiểu và thường được triển khai trong lập trình. Hướng dẫn này sẽ chứng minh việc triển khai thuật toán

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
0 của Python

Chúng ta hãy bắt đầu bằng cách tìm hiểu logic đằng sau thuật toán này. Đầu tiên, chúng tôi viết tất cả các số

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
1 và số được cung cấp
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
2

Sau đó, chúng tôi lấy số nguyên tố đầu tiên,

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
3, và đánh dấu tất cả các số lớn hơn bình phương của nó và
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
4. Sau đó, chúng tôi lặp lại tương tự với số nguyên tố tiếp theo,
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
0

Quy trình tương tự được thực hiện cho đến số nguyên tố 7

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
1. Sau khi đánh dấu tất cả các số, các giá trị không được đánh dấu là các số nguyên tố
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
2

Hình dưới đây minh họa kết quả cuối cùng

Sử dụng Sàng Eratosthenes trong Python

Trước tiên chúng tôi sẽ tạo một danh sách các phạm vi cần thiết. Danh sách này sẽ đánh dấu

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
3 hoặc
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
4 cho chỉ mục đã cho

Ban đầu, danh sách chứa tất cả các phần tử là True. Chúng tôi sẽ sử dụng một vòng lặp lồng nhau để thực hiện các thay đổi và đánh dấu các vị trí của

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
5 là
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
4

Sau này, chúng tôi sẽ lưu trữ các vị trí mà giá trị vẫn là True trong một danh sách mới. Danh sách này chứa các số nguyên tố

________số 8

đầu ra

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

Có thể thực hiện các thay đổi nhỏ đối với đoạn mã trên để cải thiện độ phức tạp về thời gian. Chẳng hạn, chúng ta có thể sử dụng bộ hoặc từ điển để lọc các số không nguyên tố

Kết quả cuối cùng được trả về trong một danh sách, nhưng hãy sử dụng từ điển hoặc bộ khi đánh dấu các số

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
7 và
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
5 là
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
3 hoặc
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
4

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
4

đầu ra

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

Trong ví dụ trên, chúng tôi sử dụng từ điển

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
41 để đánh dấu các giá trị là
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
3 hoặc
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
4 để lọc ra các số nguyên tố. Kết quả cuối cùng là trong một danh sách

Làm cách nào để mã sàng của Eratosthenes trong Python?

Trăn. Phương pháp sàng của Eratosthenes, để tính số nguyên tố .
Giải pháp mẫu. -
Mã Python. def prime_eratosthenes[n]. prime_list = [] for i in range[2, n+1]. nếu tôi không có trong prime_list. in [i] cho j trong phạm vi [i*i, n+1, i]. prime_list. append[j] print[prime_eratosthenes[100]];.
Sơ đồ
Trình chỉnh sửa mã Python

Ý nghĩa của sàng của Eratosthenes là gì?

một thủ tục để tìm các số nguyên tố bao gồm việc viết các số lẻ từ 2 trở lên liên tiếp và gạch bỏ mọi số thứ ba sau 3, mọi thứ năm sau 5 kể cả những số đã bị gạch bỏ, cứ thứ bảy sau 7, v.v.

Sàng trong lập trình là gì?

Định nghĩa. Sàng của thuật toán Eratosthenes là một thuật toán cổ xưa được sử dụng để tìm tất cả các số nguyên tố nhỏ hơn số đã cho T . Nó có thể được thực hiện bằng cách sử dụng các thao tác O[n*log[log[n]]]. Sử dụng thuật toán này, chúng ta có thể loại bỏ tất cả các số không phải là số nguyên tố và những số nhỏ hơn T đã cho.

Công thức tìm số nguyên tố trong Python là gì?

from math import sqrt # Số cần kiểm tra nguyên tố n = 9 flag = 0 if[n > 1]. cho k trong phạm vi [2, int [sqrt [n]] + 1]. nếu [n% k == 0]. cờ = 1 ngắt nếu [cờ == 0]. print[n," là một số nguyên tố. "] khác. print[n," không phải là số nguyên tố. "] khác. print[n," không phải là số nguyên tố

Chủ Đề