Penjana Nombor Perdana dalam Python
Kod Python ini bertujuan untuk menjana nombor perdana, tetapi ia memerlukan beberapa pelarasan untuk kefungsian optimum.
Kod yang diperbetulkan di bawah:
import math
def main():
count = 3
while True:
is_prime = True
for x in range(2, int(math.sqrt(count) + 1)):
if count % x == 0:
is_prime = False
break
if is_prime:
print(count)
count += 1
Isu dan Pembetulan:
-
Isu Percetakan: Kiraan cetakan kod asal walaupun ia bukan prima. Ini kerana ia mencetak pada keadaan if count % x != 0, yang tidak memastikan keutamaan. Kod yang diperbetulkan dicetak hanya apabila is_prime adalah Benar.
-
Kawalan Gelung: Pernyataan continue dalam kod asal melangkau lelaran gelung apabila syarat dipenuhi, tetapi ia sepatutnya menamatkan lelaran menggunakan rehat untuk memproses nombor seterusnya.
-
Kecekapan: Semak kebolehbahagiaan secara manual untuk setiap nombor boleh menjadi tidak cekap untuk bilangan yang besar. Kod yang diperbetulkan menggunakan Sieve of Eratosthenes, yang jauh lebih cekap untuk penjanaan perdana.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengoptimumkan penjana nombor perdana Python saya untuk kelajuan dan ketepatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan:Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn