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!