Hướng dẫn how do you generate first n prime numbers in python? - làm thế nào để bạn tạo n số nguyên tố đầu tiên trong python?

Để tham khảo, có một sự khác biệt về tốc độ khá đáng kể giữa các giải pháp đã nêu khác nhau. Đây là một số mã so sánh. Giải pháp được chỉ ra bởi Lennart được gọi là "lịch sử", giải pháp được đề xuất bởi kiến ​​được gọi là "ngây thơ", và một của RC được gọi là "regexp".

from sys import argv
from time import time

def prime(i, primes):
    for prime in primes:
        if not (i == prime or i % prime):
            return False
    primes.add(i)
    return i

def historic(n):
    primes = set([2])
    i, p = 2, 0
    while True:
        if prime(i, primes):
            p += 1
            if p == n:
                return primes
        i += 1

def naive(n):
    from itertools import count, islice
    primes = (n for n in count(2) if all(n % d for d in range(2, n)))
    return islice(primes, 0, n)

def isPrime(n):
    import re
    # see http://tinyurl.com/3dbhjv
    return re.match(r'^1?$|^(11+?)\1+$', '1' * n) == None

def regexp(n):
    import sys
    N = int(sys.argv[1]) # number of primes wanted (from command-line)
    M = 100              # upper-bound of search space
    l = list()           # result list

    while len(l) < N:
        l += filter(isPrime, range(M - 100, M)) # append prime element of [M - 100, M] to l
        M += 100                                # increment upper-bound

    return l[:N] # print result list limited to N elements

def dotime(func, n):
    print func.__name__
    start = time()
    print sorted(list(func(n)))
    print 'Time in seconds: ' + str(time() - start)

if __name__ == "__main__":
    for func in naive, historic, regexp:
        dotime(func, int(argv[1]))

Đầu ra của điều này trên máy của tôi cho n = 100 là:

naive
[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, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541]
Time in seconds: 0.0219371318817
historic
[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, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541]
Time in seconds: 0.00515413284302
regexp
[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, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541]
Time in seconds: 0.0733318328857

Như bạn có thể thấy, có một sự khác biệt khá lớn. Đây là một lần nữa cho 1000 (đã bị xóa đầu ra chính):

naive
Time in seconds: 1.49018788338
historic
Time in seconds: 0.148319005966
regexp
Time in seconds: 29.2350409031

0 như 0 không thích like 0 dislike

Quan điểm 121K views

Đã hỏi ngày 29 tháng 2 năm 2020in RGPV/UTMP B.Tech (CSE-V SEM) Chuyên gia của Python Labbyankit Yadavgoeduhub (5,8k điểm)Feb 29, 2020 in RGPV/UTMP B.Tech (CSE-V Sem) Python Lab by Ankit Yadav Goeduhub's Expert (5.8k points)

Chương trình Python để tìm số n số đầu tiên

  • rgpv-python-lab
  • utmp-python-lab
  • rajiv-gandhi-prodyogic-viswvidyalya-python-lab
  • rgpv-python-lab-experiments
  • rgpv-python-lab-experiment10

Chia sẻ với bạn bè của bạn

0 như 0 không thích Answer

0 như 0 không thích like 0 dislike

Quan điểm 121KFeb 29, 2020 by Ankit Yadav Goeduhub's Expert (5.8k points)
edited Apr 27, 2020 by Ankit Yadav

Đã hỏi ngày 29 tháng 2 năm 2020in RGPV/UTMP B.Tech (CSE-V SEM) Chuyên gia của Python Labbyankit Yadavgoeduhub (5,8k điểm)

Chương trình Python để tìm số n số đầu tiên

1 câu trả lời

Đã trả lời ngày 29 tháng 2 năm 2020Byankit Yadavgoeduhub (5,8k điểm) EditedApr 27, 2020by Ankit Yadav

Câu trả lời hay nhất

Mã chương trình

numr = int (input ("enter range:"))

print ("Số nguyên tố:", end = '')

cho n trong phạm vi (1, numr):

& nbsp; & nbsp; Đối với tôi trong phạm vi (2, n):        

& nbsp; & nbsp; & nbsp; & nbsp; if (n%i == 0):

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; phá vỡ
Prime numbers: 1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 

& nbsp; & nbsp; khác: Click here


Học và cải thiện các kỹ năng dữ liệu theo yêu cầu trực tuyến trong mùa hè này với & NBSP; Các khóa học chất lượng cao này [được đề xuất bởi Goeduhub]:-[Recommended by GOEDUHUB]:-

Các khóa học trực tuyến khoa học dữ liệu tốt nhất [Danh sách] trên:-

Yêu cầu thử nghiệm miễn phí 10 ngày của bạn cho Pluralsight.

Các khóa học khoa học dữ liệu tốt nhất trên DatacampDatacamp
Các khóa học khoa học dữ liệu tốt nhất về CourseraCoursera
Các khóa học khoa học dữ liệu tốt nhất về UDEMYUdemy
Các khóa học khoa học dữ liệu tốt nhất về PluralsightPluralsight
Các khóa học khoa học dữ liệu tốt nhất & microdegrees về tính UdacityUdacity
Trí tuệ nhân tạo tốt nhất [AI] các khóa học về CourseraCoursera
Các khóa học về máy học tốt nhất [ML] trên CourseraCoursera
Các khóa học lập trình Python tốt nhất về CourseraCoursera
Trí tuệ nhân tạo tốt nhất [AI]Udemy
Các khóa học lập trình Python tốt nhất về UDEMYUdemy

Chia sẻ với bạn bè của bạn