Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengoptimumkan Penjana Nombor Perdana Mudah dalam Python?
Mengoptimumkan Penjana Nombor Perdana Mudah dalam Python
Kod Python yang disediakan bertujuan untuk menjana nombor perdana tetapi memerlukan peningkatan untuk kecekapan.
Isu dengan Yang Asal Kod:
Diperbaiki Kod:
import math def main(): count = 3 while True: isprime = True for x in range(2, math.ceil(math.sqrt(count)) + 1): if count % x == 0: isprime = False break if isprime: print(count) count += 1
Penjelasan:
Perdana Termaju Penjanaan:
Untuk penjanaan perdana yang lebih cekap, Ayak Eratosthenes disyorkan. Berikut ialah pelaksanaan Python yang dioptimumkan dengan ulasan:
def gen_primes(): D = {} q = 2 while True: if q not in D: yield q for later in range(q * q, 1000000, q): D[later] = [q] else: for later in range(q + D[q][0], 1000000, q): D.setdefault(later, []).append(q) del D[q] q += 1
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Penjana Nombor Perdana Mudah dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!