Bagaimanakah saya boleh menjana nombor perdana dalam Python dengan cekap?

Susan Sarandon
Lepaskan: 2024-11-13 04:07:49
asal
573 orang telah melayarinya

How can I generate prime numbers in Python efficiently?

Penjana Nombor Perdana Mudah dalam Python dengan Logik Yang Diperbaiki

Kod yang diberikan bertujuan untuk menjana nombor perdana tetapi menghadapi masalah. Berikut ialah perincian isu dan kod yang disemak dengan penambahbaikan:

Masalah dan Penyelesaian:

  • keadaan yang tidak betul untuk mencetak bilangan prima: Menggantikan if count % x != 0 dengan if isprime, kami mencetak nombor perdana sahaja.
  • pengendalian gelung yang salah: Menggunakan break dan bukannya continue membolehkan kami menamatkan gelung apabila bukan- faktor utama dihadapi.
  • julat ujian: Melanjutkan julat ke int(math.sqrt(count) 1) memastikan ujian menyeluruh.
  • Ayak yang dioptimumkan Eratosthenes: Untuk penjanaan yang lebih cekap, kod tersebut menggabungkan algoritma Sieve of Eratosthenes (coretan kod berasingan disediakan untuk rujukan).

Berikut ialah skrip Python yang disemak semula:

import math

def main():
    count = 3

    while True:
        isprime = True

        for x in range(2, int(math.sqrt(count) + 1)):
            if count % x == 0:
                isprime = False
                break

        if isprime:
            print(count)

        count += 1
Salin selepas log masuk

Ayak Eratosthenes yang Dioptimumkan:

def gen_primes():
    D = {}
    q = 2

    while True:
        if q not in D:
            yield q
            D[q * q] = [q]
        else:
            for p in D[q]:
                D.setdefault(p + q, []).append(p)
            del D[q]

        q += 1
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah saya boleh menjana nombor perdana dalam Python dengan cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan