Hướng dẫn how do i use isprime in python? - làm cách nào để sử dụng isprime trong python?

Trong số nhiều bài kiểm tra số nguyên tố nổi trên Internet, hãy xem xét chức năng Python sau:

def is_prime(n):
  if n == 2 or n == 3: return True
  if n < 2 or n%2 == 0: return False
  if n < 9: return True
  if n%3 == 0: return False
  r = int(n**0.5)
  # since all primes > 3 are of the form 6n ± 1
  # start with f=5 (which is prime)
  # and test f, f+2 for being prime
  # then loop by 6. 
  f = 5
  while f <= r:
    print('\t',f)
    if n % f == 0: return False
    if n % (f+2) == 0: return False
    f += 6
  return True    

Vì tất cả các số nguyên tố> 3 đều thuộc Mẫu 6N ± 1, một khi chúng ta loại bỏ n là:

  1. không phải 2 hoặc 3 (là nguyên tố) và
  2. thậm chí không (với n%2) và
  3. Không chia hết cho 3 (với n%3) sau đó chúng ta có thể kiểm tra mỗi 6 n ± 1.

Hãy xem xét số nguyên tố 5003:

print is_prime(5003)

Prints:

 5
 11
 17
 23
 29
 35
 41
 47
 53
 59
 65
True

Dòng

print is_prime(5003)
0 đánh giá là 70 (căn bậc hai của 5003 là 70.7318881411 và
print is_prime(5003)
1 cắt ngắn giá trị này)

Hãy xem xét số lẻ tiếp theo (vì tất cả các số chẵn khác ngoài 2 không phải là số nguyên tố) của 5005, cùng một thứ in:

 5
False

Giới hạn là căn bậc hai vì

print is_prime(5003)
2 Hàm chỉ phải đi 1 vòng để thấy 5005 là chia hết cho 5 và do đó không phải là nguyên tố. Vì
print is_prime(5003)
3 (và cả hai đều là 5005), chúng ta không cần phải đi đến 1001 trong vòng lặp để biết những gì chúng ta biết ở mức 5!


Bây giờ, chúng ta hãy nhìn vào thuật toán bạn có:

def isPrime(n):
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False

    return True

Có hai vấn đề:

  1. Nó không kiểm tra nếu n nhỏ hơn 2 và không có số nguyên tố nhỏ hơn 2;
  2. Nó kiểm tra mỗi số từ 2 đến n ** 0,5 bao gồm tất cả các số chẵn và tất cả các số lẻ. Vì mỗi số lớn hơn 2 chia hết cho 2 không phải là số nguyên tố, chúng ta có thể tăng tốc một chút bằng cách chỉ kiểm tra số lẻ lớn hơn 2.

Vì thế:

def isPrime2(n):
    if n==2 or n==3: return True
    if n%2==0 or n<2: return False
    for i in range(3, int(n**0.5)+1, 2):   # only odd numbers
        if n%i==0:
            return False    

    return True

OK - điều đó tăng tốc khoảng 30% (tôi đã đánh giá nó ...)

Thuật toán tôi đã sử dụng

print is_prime(5003)
5 vẫn nhanh hơn khoảng 2 lần lần nữa, vì chỉ mỗi số nguyên thứ 6 đang lặp qua vòng lặp. (Một lần nữa, tôi đã đánh giá nó.)


Lưu ý bên: x ** 0,5 là căn bậc hai:

>>> import math
>>> math.sqrt(100)==100**0.5
True

LƯU Ý 2: Kiểm tra tính nguyên thủy là một vấn đề thú vị trong khoa học máy tính.

Bài viết này sẽ dạy bạn cách xác định xem một số nguyên có phải là nguyên tố hay không. Tất cả chúng ta đều quen thuộc với một số cách điển hình sử dụng các chức năng thư viện hoặc không sử dụng các chức năng thư viện. Nhưng có bao nhiêu bạn biết rằng có nhiều phương pháp để xác định số nguyên tố? Bạn có thể quen thuộc với một số kỹ thuật. Tuy nhiên, hướng dẫn này sẽ giáo dục bạn về tất cả các lựa chọn của bạn. Dưới đây, bạn có thể thấy cách bạn có thể tìm hiểu xem một số cụ thể có phải là số nguyên tố hay không.

Số nguyên tố là gì?

Có hai loại số trong hệ thống số. Prime và composite là hai loại. Các số không phải là sản phẩm của bất kỳ số nào khác được đưa vào danh mục số nguyên tố. Số tự nhiên luôn được sử dụng trong các tính toán này. 13 là một số nguyên tố, ví dụ. Chúng tôi có thể nhận được số này bằng cách nhân nó với bất kỳ hai số nguyên nào khác ngoại trừ 1, do đó, nếu chúng tôi lấy 4, chúng tôi sẽ nhận được kết quả tổng hợp vì nó là một sản phẩm 2x2. Hy vọng, bây giờ bạn hiểu số nguyên tố là gì.

Ví dụ 1:

Để tìm một số nguyên chính trong Python, chúng tôi sẽ sử dụng phương pháp lặp đơn giản trong ví dụ này.

Chúng tôi sử dụng một cơ chế lặp đơn giản với A hoặc trong khi vòng lặp trong chức năng này. Lặp lại thông qua các số, bắt đầu bằng 2 và kết thúc bằng Check_Num/2, để xem có bất kỳ ai trong số chúng chia num.

Nếu một số đáp ứng điều kiện này được phát hiện, sai sẽ được trả về. Nếu không có số nào khớp với tiêu chí này, số được cung cấp ‘Check_num, được coi là số nguyên tố và đúng được trả về. Sử dụng phương thức lặp đơn giản trong Python, mã sau đây xác định xem số nguyên được cung cấp có phải là số nguyên tố hay không.

Check_num = 6if Check_num> 1: & nbsp; & nbsp; cho j inrange (2, int (Check_num/2) +1): & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; if (Check_num % j) == 0: & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; in ("số không phải là số nguyên tố") & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; phá vỡ & nbsp; & nbsp; khác: & nbsp; & nbsp; & nbsp; & nbsp; in ("Số là số nguyên tố") khác: & nbsp; & nbsp; in ("không phải là số nguyên tố")= 6
if check_num > 1:
    for j in range(2, int(check_num/2)+1):
         if (check_num % j) == 0:
            print("The number is not a prime number")
            break
    else:
        print("The number is a Prime number")
else:
    print("Not a prime number")

Hướng dẫn how do i use isprime in python? - làm cách nào để sử dụng isprime trong python?

Dưới đây là ảnh chụp màn hình của kết quả cho thấy Num = 9 không phải là số nguyên tố.

Hướng dẫn how do i use isprime in python? - làm cách nào để sử dụng isprime trong python?

Ví dụ 2:

Bằng cách thực hiện một vài thay đổi đối với mã ở trên, bạn có thể cải thiện nó. Để làm việc tốt hơn của mã, bạn có thể thực hiện các tối ưu hóa được đề cập dưới đây: thay vì tìm kiếm số chính xác, hãy kiểm tra cho đến khi tìm thấy gốc của số được xác định.

Quá trình này sẽ loại bỏ sự trùng lặp khi hệ số chính của ‘Check_num, là bội số của một yếu tố nhỏ hơn. Hãy chắc chắn rằng yếu tố này đã được lặp đi lặp lại.

6N1 là biểu mẫu mà tất cả các số nguyên tố lấy ngoại trừ các số 2 và 3. Do đó, phương pháp hiệu quả nhất là kiểm tra tính phân chia của số đã cho với 2 và 3, sau đó kiểm tra tất cả các số với Mẫu 6N1.

Để phát hiện xem một số cụ thể có phải là số nguyên tố hay không, mã Python sau sử dụng phương pháp lặp đơn giản được tối ưu hóa.

def isitprime (Check_num): & nbsp; & nbsp; Nếu Check_num == 4 hoặc Check_Num == 6: Trả về Đúng & NBSP; & nbsp; Nếu Check_num%2 == 0 hoặc Check_num(check_num):
    if check_num==4 or check_num==6: return True
    if check_num%2==0 or check_num<2: return False
    for j in range(3, int(check_num**0.5)+1, 2):
        if check_num%j==0:
            return False
    return True
print(isitPrime(13))

Hướng dẫn how do i use isprime in python? - làm cách nào để sử dụng isprime trong python?

Đầu ra sau đây cho thấy số đã cho là số nguyên tố vì hàm trả về ‘true.

Hướng dẫn how do i use isprime in python? - làm cách nào để sử dụng isprime trong python?

Ví dụ 3:

Chúng tôi đã kiểm tra xem ‘Check_num, có phải là Prime hay không trong chương trình này. Số nguyên tố là những con số nhỏ hơn hoặc chúng ta cũng có thể nói bằng một. Do đó, chúng tôi chỉ tiến hành nếu ‘Check_num, nhiều hơn một. Chúng tôi xác minh xem Num có chia hết chính xác cho bất kỳ số nào giữa 2 và Check_num- 1 không.

Chúng tôi đặt một lá cờ thành True và thoát vòng lặp nếu chúng tôi tìm thấy một yếu tố trong phạm vi đó, chỉ ra rằng số nguyên không phải là số nguyên tố. Chúng tôi xác minh xem cờ là đúng hay sai ngoài vòng lặp.

Để đảm bảo nếu một số là số nguyên tố hay không, hãy sửa đổi giá trị của biến ‘Check_num, trong mã trên. Hành động này cũng có thể được thực hiện trong Python mà không cần sử dụng một biến cờ bổ sung bằng cách sử dụng câu lệnh khác.

Check_num = 243if Check_num> 1: & nbsp; & nbsp; cho j trong phạm vi (2, kiểm tra_num): & nbsp; & nbsp; & nbsp; & nbsp; if (Check_num % j) == 0: & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; in (Check_num, "= số nguyên tố") & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; in (j, "lần", kiểm tra_num // j, "là", kiểm tra_num) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; break & nbsp; & nbsp; khác: & nbsp; & nbsp; & nbsp; & nbsp; in (Check_num, "= số nguyên tố") & nbsp; khác: & nbsp; & nbsp; in (Check_num, "không phải là số nguyên tố")= 243
if check_num > 1:
   for j in range(2,check_num):
       if (check_num % j) == 0:
           print(check_num," = Prime number")
           print(j,"times",check_num//j,"is",check_num)
           break
   else:
       print(check_num," = prime number")  
else:
   print(check_num,"is not a prime number")

Hướng dẫn how do i use isprime in python? - làm cách nào để sử dụng isprime trong python?

Tại đây, bạn có thể nhận thấy hai dòng trong màn hình đầu ra. Dòng đầu tiên cho thấy số đã cho là 243 trong trường hợp của chúng tôi là số nguyên tố. Dòng thứ hai của đầu ra mô tả số lần số đã cho là 243.

Hướng dẫn how do i use isprime in python? - làm cách nào để sử dụng isprime trong python?

Ví dụ 4:

Trong ví dụ cuối cùng của chúng tôi, chúng tôi sẽ sử dụng hàm python từ sympy.isprime () để xác định xem một số nhất định có phải là số nguyên tố hay không. Sympy là một thư viện Python. Nó được sử dụng để thực hiện toán học tượng trưng. Nó mong muốn trở thành một hệ thống đại số máy tính đơn giản (CAS) với tất cả các khả năng cần thiết.

Phương pháp này yêu cầu nhập mô -đun Sympy, có thể đạt được bằng cách sử dụng lệnh nhập.

Hàm Sympy.isprime () là một hàm tích hợp mô-đun Sympy có thể được sử dụng để kiểm tra các số nguyên chính. Nó có một chức năng đơn giản trả về đúng nếu số được xem xét là nguyên tố và sai nếu nó không.

Trong Python, phương thức Sympy.isprime () được sử dụng để xác định xem một số cụ thể có phải là số nguyên tố không.

Nhập bản in Sympy (Sympy.isprime (12)) in (Sympy.isprime (11)) sympy
print(sympy.isprime(12))
print(sympy.isprime(11))

Hướng dẫn how do i use isprime in python? - làm cách nào để sử dụng isprime trong python?

Dưới đây, bạn có thể thấy hàm trả về sai và đúng cho hai số đầu vào đã cho.

Hướng dẫn how do i use isprime in python? - làm cách nào để sử dụng isprime trong python?

Hãy nhớ số âm không phải là số nguyên tố. Đầu ra của các chương trình này có thể thay đổi nếu bất kỳ số âm nào được kiểm tra so với nó.

Sự kết luận

Các số không chủ yếu là sản phẩm của bất kỳ số nào khác được gọi là số nguyên tố. Số tự nhiên luôn được sử dụng trong các tính toán này. Để xem liệu một số là số nguyên tố hay không hoặc lặp lại các số, chúng tôi sẽ cần phát triển một vòng lặp. Giả sử có nhiều số. Nó sẽ xác định liệu một số đã cho có phải là tổng của bất kỳ số nào khác hay không. Nếu là, sai được hiển thị như một hệ quả.

Chúng tôi đã cung cấp các hướng dẫn về các cách khác nhau để kiểm tra xem một số có phải là số nguyên tố hay không. Chúng tôi đã phát hiện ra một loạt các lựa chọn. Chúng tôi cũng đã học cách tạo ra một số nguyên tố. Chúng tôi hy vọng bạn tìm thấy bài viết này hữu ích. Để có được sự hiểu biết bổ sung, hãy cố gắng tự mình giải quyết các chương trình.

Thông tin về các Tác giả

Xin chào, tôi là một nhà văn tự do và thường viết cho Linux và các nội dung liên quan đến công nghệ khác