Hướng dẫn array of prime numbers python - mảng số nguyên tố python

@AMAJI✎ & NBSP; Cập nhật tháng 10-16-2020✎ Update October-16-2020

Dưới đây là một đoạn mã cho một chương trình đếm các số nguyên tố trong phạm vi bạn chỉ định trong Python.

Khi bạn muốn đếm các số nguyên tố như trong hình ảnh, hoặc khi bạn muốn đếm số nguyên tố để bình tĩnh lại, bạn sẽ muốn đảm bảo các số nguyên tố là chính xác [?].

Đây là một mã được định dạng mà tôi đã viết trong khi giải một câu đố nhỏ [CTF].

Tôi đã viết nó dưới dạng có thể tái sử dụng như một chức năng, vì vậy hãy thoải mái sửa đổi nó nếu bạn muốn.

Tôi không sử dụng bất kỳ thư viện nào như Numpy trong Python.

Môi trường được thử nghiệm

  • Python 2.7.15、3.8.5

Mã số

get_primelist là một hàm đếm số nguyên tố từ 2 đến trên.

Nó trả về một mảng các số nguyên tố từ 2 trở lên.

get_primelist.py

def get_primelist[upper]:
	result = []
	for cp in range [ 2, upper + 1 ]:
		for i in range [ 2, cp ]:
			if [ cp % i == 0 ]:
				break
		else:
			result.append[cp]
	return result

# RUN to create an array of the prime numbers
# [ 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 ]
print [get_primelist[100]]

Ngay cả với một chương trình rất đơn giản, bạn có thể nhanh chóng tính toán phạm vi từ 2 đến 100.000, vì vậy nếu bạn không muốn tốc độ, bạn không phải điều chỉnh nó khó như bạn muốn.

Để biết thêm thông tin: Thời gian xử lý, v.v.

Bảng sau đây cho thấy thời gian ước tính cho phép tính trong một thời gian thực tế.

Trên Linux, đây là thời gian để hiển thị kết quả của lệnh time.

Chiều rộng của số nguyên tố để tính toánThời gian [trung bình 3 lần chạy]
1 ~ 1000,03 giây
1 ~ 1.0000,03 giây
1 ~ 1.0001 ~ 10.000
0,29 giây1 ~ 100.000

22,55 giây

  • Môi trường đo lường
  • Python: Python3.8.2
  • HĐH: Ubuntu 20.04 LTE @ Windows10 Home x64 WSL2
  • Bộ xử lý: Intel [R] Core [TM] I7-8565U CPU @ 1.80GHz

RAM: 8,00 GB

Tôi nghĩ rằng bạn có thể nhận được các số nguyên tố đầy đủ và nhanh hơn nếu bạn sử dụng thư viện toán học phù hợp hoặc một cái gì đó. Tôi có thể thêm các bài viết bằng thư viện trong tương lai.

Bản ghi nhớ tăng tốc

Tôi muốn thêm một phiên bản được cải thiện một chút, như sàng lọc eratosthenes và cành cắt, nếu tôi có thời gian.

Kết thúc.

  • Người giới thiệu
  • PEP8 - Hướng dẫn kiểu cho mã Python
  • Wikipedia - rây eratosthenes

MIT - Khóa học mở: Định lý số nguyên tố

  • Cập nhật

Tôi đang cố gắng in tất cả các số nguyên tố trong một mảng có tên là 'CheckMe'. Nhưng tôi không thể làm cho nó hoạt động. Tôi đã thực hiện một chương trình kiểm tra nó cho một số nhưng nó không hoạt động cho một mảng. Nếu có ai biết điều gì là sai trên xin vui lòng cho tôi biết. BTW: Tôi là một Noob lớn trong Python nên nó có lẽ không phải là mã đẹp nhất.

checkMe = range[1, 100]

dividers = []
primes = []

for y in checkMe:
    x = y
    for x in range[2, x]:
        if [y/x].is_integer[]:
            dividers.append[x]
    if len[dividers] < 2:
        primes.append[y]

print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
print[primes]

Output:

range[1, 100] has 5 primes
[1, 2, 3, 4, 5]

Đầu ra dự kiến:

range[1, 100] has 25 primes
[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]

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọc

    Bàn luậnA prime number is a natural number greater than 1 that has no positive divisors other than 1 and itself. The first few prime numbers are {2, 3, 5, 7, 11, ….}.

    Cho hai số nguyên dương bắt đầu và kết thúc. Nhiệm vụ là viết một chương trình Python để in tất cả các số nguyên tố trong một khoảng thời gian.

    Định nghĩa: Một số nguyên tố là một số tự nhiên lớn hơn 1 không có các ước số dương ngoài 1 và chính nó. Một vài số nguyên tố đầu tiên là {2, 3, 5, 7, 11, phạm.}. 

    Ý tưởng để giải quyết vấn đề này là lặp lại val từ đầu đến cuối bằng cách sử dụng một vòng lặp và cho mỗi số, nếu nó lớn hơn 1, hãy kiểm tra xem nó có phân chia n không. Nếu chúng ta tìm thấy bất kỳ số nào khác phân chia, in giá trị đó.

    Dưới đây là triển khai Python: & NBSP;

    Python3

    def prime[x, y]:

        prime_list ____10

    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    1

    range[1, 100] has 25 primes
    [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
    range[1, 100] has 25 primes
    [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

    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    8
    range[1, 100] has 25 primes
    [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
    range[1, 100] has 5 primes
    [1, 2, 3, 4, 5]
    
    9

        

    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    3
    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    4
    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    5
    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    6
    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    7

    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    8______19

    def0def1

    range[1, 100] has 25 primes
    [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
    range[1, 100] has 25 primes
    [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
    range[1, 100] has 5 primes
    [1, 2, 3, 4, 5]
    
    9

    time1def6

    range[1, 100] has 25 primes
    [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
    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    3
    range[1, 100] has 25 primes
    [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
    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    5
    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    6
    The prime numbers in this range are: [2,3,5]
    0
    The prime numbers in this range are: [2,3,5]
    1
    The prime numbers in this range are: [2,3,5]
    2
    The prime numbers in this range are: [2,3,5]
    3
    The prime numbers in this range are: [2,3,5]
    4445454

    prime[x, y]:0

    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    0
    The prime numbers in this range are: [2,3,5]
    1

    prime[x, y]:3

    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    0 prime[x, y]:5

    prime[x, y]:6

    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    0 prime[x, y]:8

    checkMe = range[1, 100]
    
    dividers = []
    primes = []
    
    for y in checkMe:
        x = y
        for x in range[2, x]:
            if [y/x].is_integer[]:
                dividers.append[x]
        if len[dividers] < 2:
            primes.append[y]
    
    print["\n"+str[checkMe]+" has "+str[len[primes]]+" primes"]
    print[primes]
    
    9     0    1____101010
    range[1, 100] has 5 primes
    [1, 2, 3, 4, 5]
    
    3
    range[1, 100] has 5 primes
    [1, 2, 3, 4, 5]
    
    9

            7

    The prime numbers in this range are: [2,3,5]
    0    9
    The prime numbers in this range are: [2,3,5]
    7

    range[1, 100] has 25 primes
    [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
    range[1, 100] has 5 primes
    [1, 2, 3, 4, 5]
    
    9

            7

    The prime numbers in this range are: [2,3,5]
    0prime_list 6prime_list 7

    Output: 

    The prime numbers in this range are: [2,3,5]

    Độ phức tạp về thời gian: O [N2], trong đó n là kích thước của phạm vi.O[N2], where N is the size of the range.

    Không gian phụ trợ: O [n], vì N không gian thêm đã được thực hiện.O[N], since N extra space has been taken.

    Giải pháp trên có thể được tối ưu hóa bằng cách sử dụng sàng của eratosthenes. Vui lòng xem các số Prime in trong một phạm vi để biết chi tiết. & NBSP;

    Làm thế nào để bạn tạo ra một mảng các số nguyên tố trong Python?

    get_primelist là một hàm đếm số nguyên tố từ 2 đến trên. Nó trả về một mảng các số nguyên tố từ 2 trở lên. Ngay cả với một chương trình rất đơn giản, bạn có thể nhanh chóng tính toán phạm vi từ 2 đến 100.000, vì vậy nếu bạn không muốn tốc độ, bạn không phải điều chỉnh nó khó như bạn muốn.. It returns an array of prime numbers from 2 to upper. Even with a very simple program, you can quickly calculate the range from 2 to 100,000, so if you don't want speed, you don't have to tune it as hard as you would like.

    Làm thế nào để bạn có được một danh sách các số nguyên tố trong Python?

    Bước 1: Vòng lặp qua tất cả các yếu tố trong phạm vi đã cho.Bước 2: Kiểm tra từng số nếu nó có bất kỳ yếu tố nào giữa 1 và chính nó.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ố chính và chương trình sẽ in nó và kiểm tra số tiếp theo.

    Làm thế nào để bạn tìm thấy một số nguyên tố trong một mảng?

    Cách tiếp cận: Đầu tiên đi qua mảng lên đến n/2 và kiểm tra tất cả các yếu tố cho dù chúng có chính hay không và in các số nguyên tố.Sau đó, đi qua mảng từ phần tử n/2 cho đến n và tìm các phần tử có chính là nguyên tố hay không và in tất cả các yếu tố là số nguyên tố.

    Có bao nhiêu số nguyên tố trong một mảng?

    Lưu ý rằng một số số chỉ có một mảng [số nguyên tố] và các số khác có nhiều hơn một mảng [số tổng hợp].one array [prime numbers] and other numbers have more than one array [composite numbers].

    Bài Viết Liên Quan

    Chủ Đề