Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Mengenalpasti Nombor Perdana dengan Cekap dalam Python: Panduan Langkah demi Langkah

Cara Mengenalpasti Nombor Perdana dengan Cekap dalam Python: Panduan Langkah demi Langkah

Susan Sarandon
Susan Sarandonasal
2024-10-21 13:20:02624semak imbas

How to Identify Prime Numbers Efficiently in Python: A Step-by-Step Guide

Mengenal pasti Nombor Perdana dengan Cekap dalam Python

Mencari siri nombor perdana dalam julat tertentu ialah tugas pengaturcaraan biasa. Untuk mencapai ini dalam Python, kami menggunakan urutan logik gelung dan pernyataan bersyarat untuk menentukan keutamaan. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa beberapa percubaan awal mungkin menghasilkan keputusan yang salah.

Membetulkan Kod untuk Pengenalan Nombor Perdana

Pemeriksaan kod asal mendedahkan kecacatan kritikal : ia mencetak nombor ganjil, bukan nombor perdana. Ralat ini berpunca daripada keadaan hilang yang mengenal pasti nombor bukan perdana dengan berkesan. Berikut ialah pecahan isu:

<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>

Untuk membetulkannya, kita perlu menyemak dengan jelas sama ada nombor itu boleh dibahagi dengan mana-mana nombor antara 2 dan nombor itu sendiri. Jika tiada pembahagi ditemui, ia adalah perdana. Berikut ialah versi yang dipertingkatkan:

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

Mengoptimumkan Kod untuk Kecekapan

Untuk meningkatkan prestasi, disyorkan untuk menyemak pembahagi sahaja sehingga punca kuasa dua yang diberikan nombor. Jika tiada pembahagi ditemui dalam julat ini, ia boleh dianggap prima. Pengoptimuman ini secara drastik mengurangkan bilangan lelaran yang diperlukan:

<code class="python">import math

for num in range(2, 101):
    if all(num % i != 0 for i in range(2, int(math.sqrt(num)) + 1)):
        print(num)</code>

Pemurnian Lanjut

Kod boleh dibuat lebih cekap dengan memilih nombor ganjil sahaja memandangkan nombor perdana lebih besar daripada 2 sentiasa ganjil. Kod yang disemak:

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

Atas ialah kandungan terperinci Cara Mengenalpasti Nombor Perdana dengan Cekap dalam Python: Panduan Langkah demi Langkah. 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