Mảng số nguyên tố trong python

Số nguyên tố là số tự nhiên lớn hơn 1 và không có ước dương nào khác ngoài 1 và chính nó, chẳng hạn như 2, 3, 5, 7, 11, 13, v.v.

Người dùng được cung cấp hai số nguyên, giá trị thấp hơn và giá trị cao hơn. Nhiệm vụ là viết chương trình Python để in tất cả các số nguyên tố nằm trong khoảng [hoặc khoảng] đã cho

Để in tất cả các số nguyên tố trong khoảng thời gian đã cho, người dùng phải làm theo các bước sau

  • Bước 1. Lặp qua tất cả các phần tử trong phạm vi đã cho
  • Bước 2. Kiểm tra từng số xem nó có thừa số nào giữa 1 và chính nó không
  • Bước 3. Nếu có, thì số đó không phải là số nguyên tố và nó sẽ chuyển sang số tiếp theo
  • Bước 4. Nếu không, đó là số nguyên tố và chương trình sẽ in ra và kiểm tra số tiếp theo
  • Bước 5. Vòng lặp sẽ bị ngắt khi đạt đến giá trị trên

Ví dụ. Mã Python để in số nguyên tố giữa khoảng thời gian đã cho

đầu ra

Please, Enter the Lowest Range Value:  14
Please, Enter the Upper Range Value:  97
The Prime Numbers in the range are: 
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

Phần kết luận

Trong hướng dẫn này, chúng tôi đã chỉ ra cách viết mã để in các số nguyên tố giữa khoảng các số đã cho.

Tôi đã xem xét việc tạo các số nguyên tố và sử dụng các thao tác thông minh về phần tử khác nhau trong mảng Numpy để làm như vậy. Để cắt đứt cuộc rượt đuổi, prime6 dưới đây là cách thực hiện nhanh nhất. Những người trước đó kể câu chuyện về cách tôi đến đó

Hàm sau sử dụng vòng lặp for để tạo các số nguyên tố nhỏ hơn 100k và mất khoảng 7 giây trên máy tính xách tay của tôi

import numpy
import math
def prime2[upto=100000]:
    return filter[lambda num: numpy.array[[num % factor for factor in range[2,1+int[math.sqrt[num]]]]].all[], range[2,upto+1]]

Nếu chúng ta loại bỏ vòng lặp for, chúng ta sẽ giảm thời gian xuống còn khoảng 1. 3 giây

import numpy
import math
def prime[upto=100000]:
    return filter[lambda num: [num % numpy.arange[2,1+int[math.sqrt[num]]]].all[], range[2,upto+1]]

Bằng cách không bao gồm các số chẵn, chúng ta có thể chạy lại một nửa thời gian đến khoảng. 7 giây

import numpy
import math
def prime3[upto=100000]:
    return [2]+filter[lambda num: [num % numpy.arange[3,1+int[math.sqrt[num]],2]].all[], range[3,upto+1,2]]

Trên đây là minh họa về hiệu quả trong việc sử dụng các phép toán theo phần tử trong mảng Numpy thay vì lặp

Một cách hay để tăng tốc đoạn mã trên hơn nữa là phá vỡ sau khi tìm thấy điều kiện modulo bằng 0 đầu tiên. Đoạn mã dưới đây chạy trong khoảng. 4 giây

import numpy
import math
def prime4[upto=100000]:
    primes=[2]
    for num in range[3,upto+1,2]:
        isprime=True
        for factor in range[3,1+int[math.sqrt[num]],2]:
             if not num % factor: isprime=False; break
        if isprime: primes.append[num]
    return primes

Ok Scruffy Pete đã đặt ra thử thách trong phần bình luận, vì vậy tôi cần nghiêm túc về việc tối ưu hóa. Mã bên dưới sử dụng một vài thủ thuật Numpy để triển khai linh hoạt và tạo ra 1 triệu số nguyên tố trong khoảng. 03 giây, nhanh hơn khoảng 6 lần so với Scruffy Pete's

Số nguyên tố là số tự nhiên lớn hơn 1 và không có ước nào ngoài 1 và chính nó. Bạn có thể viết một mã bằng Python sẽ giúp bạn tìm tất cả các số nguyên tố. Trong bài viết này, chúng ta sẽ xem cách viết chương trình số nguyên tố bằng Python theo trình tự sau

Bắt đầu nào

Một số nguyên tố là gì?

Số nguyên dương lớn hơn 1 không có ước nào khác ngoài 1 và chính nó được gọi là số nguyên tố. Các số 2, 3, 5, 7, v.v. là các số nguyên tố vì chúng không có thừa số nào khác. Để tìm một số nguyên tố trong Python, bạn phải lặp lại giá trị từ đầu đến cuối bằng vòng lặp for và với mỗi số, nếu nó lớn hơn 1, hãy kiểm tra xem nó có chia hết cho n không. Nếu chúng tôi tìm thấy bất kỳ số nào khác chia, hãy in giá trị đó

Tìm hiểu khóa đào tạo Python của chúng tôi tại các thành phố/quốc gia hàng đầu

Chương trình Python để kiểm tra số nguyên tố

Số nguyên tố luôn dương và nó sẽ được kiểm tra ngay từ đầu chương trình. Tại đây, bạn sẽ chia số vừa nhập cho tất cả các số để xem có ước dương nào khác ngoài 1 và chính số đó không. Nếu bất kỳ ước nào được tìm thấy thì chúng tôi hiển thị rằng “số không phải là số nguyên tố”, ngược lại chúng tôi hiển thị rằng “số là số nguyên tố”

chương trình Python

num = 13
if num > 1:
for i in range[2, num//2]:
if [num % i] == 0:
print[num, "is not a prime number"]
break
else:
print[num, "is a prime number"]
else:
print[num, "is not a prime number"]

đầu ra. 13 là một số nguyên tố

Phương pháp tối ưu hóa

Có nhiều cách khác nhau để tối ưu hóa chương trình số nguyên tố trong Python

  • Thay vì kiểm tra đến n, chúng ta có thể kiểm tra đến √n vì thừa số lớn hơn của n phải là bội số của thừa số nhỏ hơn đã được kiểm tra
  • Thuật toán có thể được cải thiện hơn nữa bằng cách quan sát rằng tất cả các số nguyên tố đều có dạng 6k ± 1, ngoại trừ 2 và 3. Điều này là do tất cả các số nguyên có thể được biểu diễn dưới dạng [6k + i] đối với một số nguyên k và với i = ?1, 0, 1, 2, 3 hoặc 4; . Vì vậy, một phương pháp hiệu quả hơn là kiểm tra xem n có chia hết cho 2 hay 3 hay không, sau đó kiểm tra tất cả các số có dạng 6k ± 1

Ví dụ

def isPrime[n] :
if [n 

Chủ Đề