Hướng dẫn how does python determine primality? - trăn xác định tính nguyên thủy như thế nào?

Hướng dẫn này sẽ dạy bạn cách viết chương trình Python để kiểm tra xem một số có chính hay không.number is prime or not.

Nếu bạn đã từng thực hiện 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 về tính nguyên thủy hoặc để kiểm tra xem một số là số nguyên tố. Và trong vài phút tiếp theo, 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ẽ:

  • Xem lại những điều cơ bản của các số nguyên tố,
  • Viết mã python để kiểm tra xem một số là số nguyên tố và
  • Tối ưu hóa nó thêm để có được thuật toán thời gian chạy O [√n].

Đối với tất cả đ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 những điều cơ bản của số nguyên tố.

Trong lý thuyết số, một số N tự nhiên được cho là chính nếu nó có chính xác hai yếu tố: 1 và chính số [n]. Nhớ lại từ toán học của bạn: Một số tôi được cho là một yếu tố của số N, nếu tôi chia đều n. ✅n said to be prime if it has exactly two factors: 1 and the number itself [n]. Recall from your school math: a number i is said to be a factor of the number n, if i divides n evenly. ✅

Bảng sau đây liệt kê một vài con số, tất cả các yếu tố của chúng và nếu chúng là nguyên tố.

N Các nhân tố Là Prime?
1 1 Không
2 1, 2Đúng
3 1, 3Đúng
4 1, 3Không
7 1, 2Đúng
15 1, 3Không

1, 2

  • Đúng
  • 1, 3
  • 1, 2, 4

1, 7

1, 3, 5, 15

Từ bảng trên, chúng ta có thể viết ra như sau:

2 là số nguyên tố nhỏ nhất.

1 là một yếu tố của mỗi số.

Mỗi số n là một yếu tố của chính nó.

Vì vậy, 1 và N là yếu tố tầm thường cho bất kỳ số n. Và một số nguyên tố không nên có bất kỳ yếu tố nào khác ngoài hai yếu tố này.

Điều này có nghĩa là khi bạn đi từ 2 đến N-1, bạn không thể tìm thấy một yếu tố không tầm thường phân chia N mà không có phần còn lại.

  • Thuật toán O [N] để kiểm tra xem một số có chính trong Python khôngn evenly without a remainder, you can immediately conclude that the number is not prime.
  • Trong 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 hàm Python.2 all the way up to n – 1 without finding a number that divides n evenly, then the number is prime.

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 range[] trong Python.

Trong Python,

is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
0 trả về một đối tượng phạm vi. Sau đó, bạn có thể lặp lại đối tượng phạm vi để có được một chuỗi từ
is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
1 cho đến
is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
2 trong các bước của
is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
3.

def is_prime[n]:
  for i in range[2,n]:
    if [n%i] == 0:
      return False
  return True

Vì chúng ta cần tập hợp các số nguyên từ 2 đến N-1, chúng ta có thể chỉ định

is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
4 và sử dụng nó kết hợp với vòng lặp
is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
5.

  • Ở đây, những gì chúng tôi muốn làm:n as the argument.
  • Nếu bạn tìm thấy một số phân chia n đều mà không có phần còn lại, bạn có thể kết luận ngay rằng số không phải là số nguyên tố.
  • Nếu bạn đã lặp qua toàn bộ phạm vi số từ 2 tất cả các cách lên đến N - 1 mà không tìm thấy một số chia đều n, thì số là số nguyên tố.

Chức năng Python để kiểm tra số nguyên tố

is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True

Sử dụng ở trên, chúng ta có thể tiếp tục và xác định hàm

is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
6 như sau.

Bây giờ, hãy để phân tích định nghĩa hàm trên.

Hàm trên

is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
6 có số nguyên dương N làm đối số.

Nếu bạn tìm thấy một yếu tố trong phạm vi được chỉ định là [2, N-1], hàm sẽ trả về ________ 18, vì số không phải là số nguyên tố. Các nhân tố
6 Là Prime?3, 6
10 Không5, 10
18 1, 29, 18

Đúngn that is greater than n/2 is n itself.

1, 3

1, 2, 4

1, 7

1, 3, 5, 15

Từ bảng trên, chúng ta có thể viết ra như sau:

is_prime[9]
# False

is_prime[11]
# True

2 là số nguyên tố nhỏ nhất.O[n] runtime complexity: proportional to the value of n or linear in n.

1 là một yếu tố của mỗi số.

Mỗi số n là một yếu tố của chính nó.

Vì vậy, 1 và N là yếu tố tầm thường cho bất kỳ số n. Và một số nguyên tố không nên có bất kỳ yếu tố nào khác ngoài hai yếu tố này.

Điều này có nghĩa là khi bạn đi từ 2 đến N-1, bạn không thể tìm thấy một yếu tố không tầm thường phân chia N mà không có phần còn lại.

Thuật toán O [N] để kiểm tra xem một số có chính trong Python khônga is a factor of the number n, then there also exists a factor b such that a x b = n, or simply, ab = n.

Trong 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 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 range[] trong Python.

Trong Python,

is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
0 trả về một đối tượng phạm vi. Sau đó, bạn có thể lặp lại đối tượng phạm vi để có được một chuỗi từ
is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
1 cho đến
is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
2 trong các bước của
is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
3.

Vì chúng ta cần tập hợp các số nguyên từ 2 đến N-1, chúng ta có thể chỉ định

is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
4 và sử dụng nó kết hợp với vòng lặp
is_prime[2]
# True

is_prime[8]
# False

is_prime[9]
# False

is_prime[11]
# True
5.[a, b], you can see that if a is less than 4.24, then b is greater than 4.24—in this example, [2, 18] and [3, 6].

một b
1 18
2 9
3 6
Các yếu tố 18 theo cặp

Hình dưới đây cho thấy các yếu tố của 18 được vẽ trên dòng số.

Nếu số N xảy ra là một hình vuông hoàn hảo, bạn sẽ có a = b = √n là một trong những yếu tố.

▶️ Look at the factors of 36 in the table below. As 36 is a perfect square, a = b = 6 is one of the factors. For all other factor pairs [a, b], a < 6 and b > 6 holds.

một b
1 36
2 18
3 12
4 9
6 6
Các yếu tố 18 theo cặp

Hình dưới đây cho thấy các yếu tố của 18 được vẽ trên dòng số.

  • Nếu số N xảy ra là một hình vuông hoàn hảo, bạn sẽ có a = b = √n là một trong những yếu tố.n can be written as n = a x b
  • If n is a perfect square, then a = b = √n.
  • Các yếu tố của 36 theo cặpa < b, then, a < √n and b > √n.
  • Tóm lại, chúng tôi có những điều sau đây:a > b, then a > √n and b < √n.

Mỗi số n có thể được viết là n = a x b

Nếu n là một hình vuông hoàn hảo, thì a = b = √n.

Let’s proceed to optimize the function to check for prime numbers in Python.


import math
def is_prime[n]:
  for i in range[2,int[math.sqrt[n]]+1]:
    if [n%i] == 0:
      return False
  return True

Khác, nếu a> b, thì a> √n và b

Bài Viết Liên Quan

Chủ Đề