Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengoptimumkan Percetakan Nombor Perdana dalam Python untuk Keputusan Tepat?

Bagaimana untuk Mengoptimumkan Percetakan Nombor Perdana dalam Python untuk Keputusan Tepat?

DDD
DDDasal
2024-10-21 13:34:31729semak imbas

How to Optimize Prime Number Printing in Python for Accurate Results?

Mencetak Siri Nombor Perdana dalam Python

Mengenal pasti nombor perdana ialah konsep asas dalam matematik dan pengaturcaraan. Nombor perdana ialah integer yang lebih besar daripada 1 yang bukan hasil darab dua integer yang lebih kecil. Kod Python berikut bertujuan untuk mencetak satu siri nombor perdana dari 1 hingga 100.

Kod dan Isu

Satu pendekatan biasa untuk mencari nombor perdana ialah dengan melelaran melalui nombor dari 2 hingga n. Untuk setiap nombor, semak sama ada ia boleh dibahagikan dengan mana-mana nombor antara 2 dan nombor itu sendiri (tidak termasuk 1). Jika ia boleh dibahagikan, ia bukan nombor perdana; sebaliknya.

Pertimbangkan kod berikut bertujuan untuk mencetak nombor perdana antara 1 dan 100:

<code class="python">for num in range(1, 101):
    for i in range(2, num):
        if num % i == 0:
            break
        else:
            print(num)
            break</code>

Walau bagaimanapun, kod ini menghadapi isu di mana nombor ganjil dicetak dan bukannya nombor perdana. Kecacatan timbul kerana gelung luar berulang bukan sahaja ke atas nombor perdana tetapi juga nombor komposit (berbilang nombor lain). Akibatnya, syarat jika num % i != 0 menjadi benar untuk nombor komposit ganjil seperti 9, yang membawa kepada pencetakan yang salah bagi semua nombor ganjil.

Penyelesaian dan Pengoptimuman

Untuk membetulkan ini, kita mesti mengubah suai kod untuk menyemak nombor perdana secara eksplisit. Berikut ialah versi yang disemak:

<code class="python">for num in range(2, 101):  # Start at 2 as 1 is not prime
    prime = True
    for i in range(2, num):
        if num % i == 0:
            prime = False
    if prime:
        print(num)</code>

Dalam kod ini, kami memperkenalkan perdana pembolehubah boolean, pada mulanya ditetapkan kepada Benar. Kami kemudian menyemak setiap nombor antara 2 dan num-1 (tidak termasuk num) menggunakan gelung dalam. Jika nombor boleh dibahagi dengan sebarang nombor i, kami menetapkan perdana kepada Palsu, menunjukkan bahawa ia bukan perdana. Selepas gelung dalam, jika perdana kekal Benar, kami mencetak nombor.

Kod ini mengenal pasti nombor perdana dalam julat yang ditentukan dengan tepat. Walau bagaimanapun, ia boleh dioptimumkan lagi dengan hanya memeriksa pembahagi sehingga punca kuasa dua num. Ini kerana sebarang faktor yang lebih besar daripada punca kuasa dua akan mempunyai faktor sepadan kurang daripada punca kuasa dua.

Berikut ialah versi yang dioptimumkan:

<code class="python">for num in range(2, 101):
    prime = True
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            prime = False
    if prime:
        print(num)</code>

Dengan menggunakan tweak ini, kod mencetak dengan berkesan siri nombor perdana antara 1 dan 100.

Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Percetakan Nombor Perdana dalam Python untuk Keputusan Tepat?. 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