Thuật toán số nguyên tố python

Nếu bạn tham gia vào chương trình cạnh tranh, bạn có thể quen với thực tế là các câu hỏi liên quan đến số Nguyên tố là một trong những lựa chọn của người ra đề. Ở đây, chúng ta sẽ thảo luận về cách tối ưu hóa chức năng của bạn để kiểm tra số Nguyên tố trong tập hợp các phạm vi nhất định và cũng sẽ tính toán thời gian để thực hiện chúng

Show

Theo định nghĩa, số nguyên tố là số nguyên dương chỉ chia hết cho chính nó và 1. Ví dụ. 2,3,5,7. Nhưng nếu một số có thể được phân tích thành các số nhỏ hơn, thì nó được gọi là Hợp số. Ví dụ. 4=2*2, 6=2*3

Và số nguyên 1 không phải là số nguyên tố cũng không phải là hợp số. Kiểm tra xem một số có phải là số nguyên tố hay không thì dễ nhưng kiểm tra hiệu quả cần một số nỗ lực

Khuyến khích. Vui lòng thử cách tiếp cận của bạn trên {IDE} trước, trước khi chuyển sang giải pháp

Phương pháp 1

Bây giờ chúng ta hãy thực hiện hàm đầu tiên để kiểm tra xem một số, chẳng hạn n, có phải là số nguyên tố hay không. Trong phương pháp này, chúng tôi sẽ kiểm tra tất cả các ước từ 2 đến n-1. Chúng tôi sẽ bỏ qua 1 và n. Nếu n chia hết cho bất kỳ ước nào, hàm sẽ trả về Sai, nếu không thì Đúng. Sau đây là các bước được sử dụng trong phương pháp này.  

  1. Nếu số nguyên nhỏ hơn 1, nó trả về Sai
  2. Nếu số đã cho chia hết cho bất kỳ số nào từ 2 đến n, hàm sẽ trả về Sai
  3. Nếu không, nó sẽ trả về True

Python3




# Python Program to find prime numbers in a range

import time

 

 

def is_prime(n):

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
1
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
2
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
4
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
5

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
6_______0_______7
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
8

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
1
Total prime numbers in range: 9592
Time required: 0.4116342067718506
2
Total prime numbers in range: 9592
Time required: 0.4116342067718506
3
Total prime numbers in range: 9592
Time required: 0.4116342067718506
4
Total prime numbers in range: 9592
Time required: 0.4116342067718506
5
Total prime numbers in range: 9592
Time required: 0.4116342067718506
6

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
6_______0_______1
Total prime numbers in range: 9592
Time required: 0.4116342067718506
9
Total prime numbers in range: 9592
Time required : 0.11761713027954102
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
1
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required : 0.11761713027954102
4_______0_______5

Total prime numbers in range: 9592
Time required : 0.11761713027954102
6_______0_______7
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
8

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
7
Total prime numbers in range: 9592
Time required: 0.0312497615814209
1

 

 

Total prime numbers in range: 9592
Time required: 0.0312497615814209
2

Total prime numbers in range: 9592
Time required: 0.0312497615814209
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required: 0.0312497615814209
5

Total prime numbers in range: 9592
Time required: 0.0312497615814209
6_______0_______3
Total prime numbers in range: 9592
Time required : 0.11761713027954102
Total prime numbers in range: 9592
Time required: 0.0312497615814209
9

 

Total prime numbers in range: 9592
Time required: 0.4116342067718506
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
9
Total prime numbers in range: 9592
Time required: 0.4116342067718506
2
Total prime numbers in range: 9592
Time required: 0.4116342067718506
3_______10_______4
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
4# Python Program to find prime numbers in a range6# Python Program to find prime numbers in a range7# Python Program to find prime numbers in a range8

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0import0
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3 import2

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.0312497615814209
6import5
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3 import0

import8

Total prime numbers in range: 9592
Time required: 0.4116342067718506
4time0time1

 

time2______0_______3

Total prime numbers in range: 9592
Time required: 0.0312497615814209
5

import8

Total prime numbers in range: 9592
Time required: 0.4116342067718506
4time7time8time9 def0

đầu ra.  

Total prime numbers in range: 9592
Time required: 60.702312707901

Trong đoạn code trên, chúng ta kiểm tra tất cả các số từ 1 đến 100000 xem các số đó có phải là số nguyên tố hay không. Nó có một thời gian chạy rất lớn như được hiển thị. Mất khoảng 1 phút để chạy. Đây là một cách tiếp cận đơn giản nhưng mất rất nhiều thời gian để chạy. Vì vậy, nó không được ưa thích trong lập trình cạnh tranh

Phương pháp 2

 
Trong phương pháp này, chúng tôi sử dụng một thủ thuật đơn giản bằng cách giảm số ước mà chúng tôi kiểm tra. Chúng tôi đã phát hiện ra rằng có một đường mảnh đóng vai trò như một tấm gương phản chiếu như thể hiện phép chia thừa số bên dưới đường thẳng và phép chia thừa số bên trên đường thẳng theo thứ tự ngược lại. Đường thẳng chia hai thừa số thành hai nửa là đường căn bậc hai của số. Nếu số là một số chính phương, chúng ta có thể dịch chuyển dòng 1 và nếu chúng ta có thể lấy giá trị nguyên của dòng chia.  

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1

Trong hàm này, chúng tôi tính toán một số nguyên, giả sử max_div, là căn bậc hai của số và lấy giá trị sàn của nó bằng thư viện toán học của Python. Trong ví dụ trước, chúng tôi lặp lại từ 2 đến n-1. Nhưng trong trường hợp này, chúng tôi giảm các ước số xuống một nửa như được hiển thị. Bạn cần nhập mô-đun toán học để lấy tầng và hàm sqrt.  
Sau đây là các bước được sử dụng trong phương pháp này.  

  1. Nếu số nguyên nhỏ hơn 1, nó trả về Sai
  2. Bây giờ, ta rút gọn các số cần kiểm tra về căn bậc hai của số đã cho
  3. Nếu số đã cho chia hết cho bất kỳ số nào từ 2 đến căn bậc hai của số đó, hàm sẽ trả về Sai
  4. Nếu không, nó sẽ trả về True

Python3




# Python Program to find prime numbers in a range

import def3

import time

def is_prime(n):

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
1
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
2
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
4
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
5

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
6_______0_______7
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
8

 

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0is_prime(n):8
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
00

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
1
Total prime numbers in range: 9592
Time required: 0.4116342067718506
2
Total prime numbers in range: 9592
Time required: 0.4116342067718506
3
Total prime numbers in range: 9592
Time required: 0.4116342067718506
4
Total prime numbers in range: 9592
Time required: 0.4116342067718506
5# Python Program to find prime numbers in a range6_______0_______4 import5
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
11

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
6_______0_______1
Total prime numbers in range: 9592
Time required: 0.4116342067718506
9
Total prime numbers in range: 9592
Time required : 0.11761713027954102
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
1
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required : 0.11761713027954102
4_______0_______5

Total prime numbers in range: 9592
Time required : 0.11761713027954102
6_______0_______7
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
8

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
7
Total prime numbers in range: 9592
Time required: 0.0312497615814209
1

 

Total prime numbers in range: 9592
Time required: 0.0312497615814209
2

Total prime numbers in range: 9592
Time required: 0.0312497615814209
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required: 0.0312497615814209
5

Total prime numbers in range: 9592
Time required: 0.0312497615814209
6_______0_______3
Total prime numbers in range: 9592
Time required : 0.11761713027954102
4
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
34

 

Total prime numbers in range: 9592
Time required: 0.4116342067718506
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
9
Total prime numbers in range: 9592
Time required: 0.4116342067718506
2
Total prime numbers in range: 9592
Time required: 0.4116342067718506
3_______10_______4
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
4# Python Program to find prime numbers in a range6# Python Program to find prime numbers in a range7# Python Program to find prime numbers in a range8

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0import0
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3 import2

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.0312497615814209
6import5
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3 import0

import8

Total prime numbers in range: 9592
Time required: 0.4116342067718506
4time0time1

 

time2______0_______3

Total prime numbers in range: 9592
Time required: 0.0312497615814209
5

import8

Total prime numbers in range: 9592
Time required: 0.4116342067718506
4time7time8time9 def0

đầu ra.   

Total prime numbers in range: 9592
Time required: 0.4116342067718506

Trong đoạn code trên, chúng ta kiểm tra tất cả các số từ 1 đến 100000 xem các số đó có phải là số nguyên tố hay không. Nó mất thời gian tương đối ít hơn so với phương pháp trước đó. Đây là một cách tiếp cận hơi phức tạp nhưng tạo ra sự khác biệt lớn trong thời gian chạy mã. Vì vậy, nó được ưa thích hơn trong lập trình cạnh tranh.  
 

Phương pháp 3

 
Bây giờ, chúng tôi sẽ tối ưu hóa mã của mình lên cấp độ tiếp theo, mất ít thời gian hơn so với phương pháp trước đó. Bạn có thể nhận thấy rằng trong ví dụ trước, chúng tôi đã lặp qua mọi số chẵn cho đến giới hạn, điều này thật lãng phí. Điều cần lưu ý là tất cả các số chẵn trừ hai không thể là số nguyên tố. Trong phương pháp này, chúng tôi loại bỏ tất cả các số chẵn để tối ưu hóa mã của chúng tôi và sẽ chỉ kiểm tra các ước số lẻ.  
Sau đây là các bước được sử dụng trong phương pháp này.  

  1. Nếu số nguyên nhỏ hơn 1, nó trả về Sai
  2. Nếu số đó chia hết cho 2, nó sẽ trả về True nếu số đó bằng 2 khác false
  3. Bây giờ, chúng tôi đã kiểm tra tất cả các số chẵn. Bây giờ, hãy tìm các số lẻ
  4. Nếu số đã cho chia hết cho bất kỳ số nào từ 3 đến căn bậc hai của số bỏ qua tất cả các số chẵn, hàm sẽ trả về Sai
  5. Nếu không, nó sẽ trả về True

Python3




# Python Program to find prime numbers in a range

import def3

import time

def is_prime(n):

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
1
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
2
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
4
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
5

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
6_______0_______7
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
8

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
1
Total prime numbers in range: 9592
Time required: 0.4116342067718506
9
Total prime numbers in range: 9592
Time required : 0.11761713027954102
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
5
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required : 0.11761713027954102
4
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
5

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
6_______0_______7
Total prime numbers in range: 9592
Time required: 0.4116342067718506
9
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required: 0.4116342067718506
5

 

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0is_prime(n):8
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
00

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
1
Total prime numbers in range: 9592
Time required: 0.4116342067718506
2
Total prime numbers in range: 9592
Time required: 0.4116342067718506
3
Total prime numbers in range: 9592
Time required: 0.4116342067718506
4
Total prime numbers in range: 9592
Time required: 0.4116342067718506
07# Python Program to find prime numbers in a range6
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
4 import5
Total prime numbers in range: 9592
Time required: 0.4116342067718506
11
Total prime numbers in range: 9592
Time required: 0.4116342067718506
5# Python Program to find prime numbers in a range8

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
6_______0_______1
Total prime numbers in range: 9592
Time required: 0.4116342067718506
9
Total prime numbers in range: 9592
Time required : 0.11761713027954102
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
1
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required : 0.11761713027954102
4_______0_______5

Total prime numbers in range: 9592
Time required : 0.11761713027954102
6_______0_______7
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
8

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
7
Total prime numbers in range: 9592
Time required: 0.0312497615814209
1

 

Total prime numbers in range: 9592
Time required: 0.0312497615814209
2

Total prime numbers in range: 9592
Time required: 0.0312497615814209
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required: 0.0312497615814209
5

Total prime numbers in range: 9592
Time required: 0.0312497615814209
6_______0_______3
Total prime numbers in range: 9592
Time required : 0.11761713027954102
4
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
34

 

Total prime numbers in range: 9592
Time required: 0.4116342067718506
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
9
Total prime numbers in range: 9592
Time required: 0.4116342067718506
2
Total prime numbers in range: 9592
Time required: 0.4116342067718506
3_______10_______4
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
4# Python Program to find prime numbers in a range6# Python Program to find prime numbers in a range7# Python Program to find prime numbers in a range8

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0import0
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3 import2

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.0312497615814209
6import5
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3 import0

import8

Total prime numbers in range: 9592
Time required: 0.4116342067718506
4time0time1

 

time2______0_______3

Total prime numbers in range: 9592
Time required: 0.0312497615814209
5

import8

Total prime numbers in range: 9592
Time required: 0.4116342067718506
4time7time8time9 def0

đầu ra.   

Total prime numbers in range: 9592
Time required : 0.11761713027954102

Trong đoạn code trên, chúng ta kiểm tra tất cả các số từ 1 đến 100000 xem các số đó có phải là số nguyên tố hay không. Phải mất thời gian tương đối ít hơn so với tất cả các phương pháp trước đó để chạy chương trình. Đó là cách hiệu quả nhất và nhanh nhất để kiểm tra số nguyên tố. Do đó, nó được ưa thích nhất trong lập trình cạnh tranh. Lần tới khi thử bất kỳ câu hỏi nào trong chương trình cạnh tranh, hãy sử dụng phương pháp này để có kết quả tốt nhất
 

phương pháp sàng.  

Phương pháp này in tất cả các số nguyên tố nhỏ hơn hoặc bằng một số nhất định, n. Ví dụ: nếu n là 10, đầu ra phải là “2, 3, 5, 7”. Nếu n là 20, đầu ra phải là “2, 3, 5, 7, 11, 13, 17, 19”.  
Phương pháp này được coi là phương pháp hiệu quả nhất để tạo ra tất cả các số nguyên tố nhỏ hơn số đã cho, n. Đây được coi là phương pháp nhanh nhất để tạo danh sách các số nguyên tố. Phương pháp này không phù hợp để kiểm tra một số cụ thể. Phương pháp này được ưu tiên để tạo danh sách tất cả các số nguyên tố

Python3




# Python Program to find prime numbers in a range

import time

def

Total prime numbers in range: 9592
Time required: 0.4116342067718506
72

Total prime numbers in range: 9592
Time required: 0.4116342067718506
73

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
75

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
77

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
79

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
81

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
83
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required: 0.4116342067718506
85_______31_______1
Total prime numbers in range: 9592
Time required: 0.4116342067718506
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
1
Total prime numbers in range: 9592
Time required: 0.4116342067718506
2
Total prime numbers in range: 9592
Time required: 0.4116342067718506
3
Total prime numbers in range: 9592
Time required: 0.4116342067718506
91import5
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
4
Total prime numbers in range: 9592
Time required: 0.4116342067718506
94

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
97
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required: 0.4116342067718506
5

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required : 0.11761713027954102
01
Total prime numbers in range: 9592
Time required : 0.11761713027954102
02
Total prime numbers in range: 9592
Time required : 0.11761713027954102
03
Total prime numbers in range: 9592
Time required : 0.11761713027954102
04
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required : 0.11761713027954102
06

Total prime numbers in range: 9592
Time required : 0.11761713027954102
07

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
6
Total prime numbers in range: 9592
Time required : 0.11761713027954102
09

Total prime numbers in range: 9592
Time required : 0.11761713027954102
10
Total prime numbers in range: 9592
Time required : 0.11761713027954102
11

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
6_______0_______1
Total prime numbers in range: 9592
Time required : 0.11761713027954102
14
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3_______0_______3
Total prime numbers in range: 9592
Time required: 0.0312497615814209
1# Python Program to find prime numbers in a range8

Total prime numbers in range: 9592
Time required : 0.11761713027954102
19

Total prime numbers in range: 9592
Time required : 0.11761713027954102
6_______20_______21

Total prime numbers in range: 9592
Time required : 0.11761713027954102
6_______10_______0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
1
Total prime numbers in range: 9592
Time required: 0.4116342067718506
2
Total prime numbers in range: 9592
Time required: 0.4116342067718506
3
Total prime numbers in range: 9592
Time required : 0.11761713027954102
02
Total prime numbers in range: 9592
Time required : 0.11761713027954102
03
Total prime numbers in range: 9592
Time required : 0.11761713027954102
29_______299_______5
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
4
Total prime numbers in range: 9592
Time required : 0.11761713027954102
32

Total prime numbers in range: 9592
Time required : 0.11761713027954102
33
Total prime numbers in range: 9592
Time required : 0.11761713027954102
34
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
8

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
6_______10_______97import5
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
4

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.0312497615814209
6
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required : 0.11761713027954102
4

 

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required : 0.11761713027954102
47

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
0
Total prime numbers in range: 9592
Time required: 0.4116342067718506
97
Total prime numbers in range: 9592
Time required: 0.4116342067718506
2
Total prime numbers in range: 9592
Time required: 0.4116342067718506
3
Total prime numbers in range: 9592
Time required: 0.4116342067718506
4
Total prime numbers in range: 9592
Time required: 0.4116342067718506
5
Total prime numbers in range: 9592
Time required: 0.4116342067718506
6

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
6
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
1
Total prime numbers in range: 9592
Time required : 0.11761713027954102
58

Total prime numbers in range: 9592
Time required : 0.11761713027954102
6_______31_______6import5
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
4

36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
0
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
7
Total prime numbers in range: 9592
Time required: 0.0312497615814209
6

 

Total prime numbers in range: 9592
Time required: 0.0312497615814209
2

Total prime numbers in range: 9592
Time required: 0.0312497615814209
3
36=1*36          
  =2*18
  =3*12
  =4*9
------------
  =6*6
------------
  =9*4
  =12*3
  =18*2
  =36*1
3
Total prime numbers in range: 9592
Time required: 0.0312497615814209
5

Total prime numbers in range: 9592
Time required: 0.0312497615814209
6_______0_______3
Total prime numbers in range: 9592
Time required : 0.11761713027954102
73# Python Program to find prime numbers in a range7
Total prime numbers in range: 9592
Time required : 0.11761713027954102
75

import8

Total prime numbers in range: 9592
Time required: 0.4116342067718506
4
Total prime numbers in range: 9592
Time required : 0.11761713027954102
78time1

 

time2______0_______3

Total prime numbers in range: 9592
Time required: 0.0312497615814209
5

import8

Total prime numbers in range: 9592
Time required: 0.4116342067718506
4
Total prime numbers in range: 9592
Time required : 0.11761713027954102
85time8time9 def0

đầu ra.  

Total prime numbers in range: 9592
Time required: 0.0312497615814209

Ghi chú. Thời gian cần thiết cho tất cả các thủ tục có thể khác nhau tùy thuộc vào trình biên dịch nhưng thứ tự thời gian được yêu cầu bởi các phương pháp khác nhau sẽ không thay đổi