Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah penjana nombor perdana Python saya hanya mencetak pembolehubah kiraan?

Mengapakah penjana nombor perdana Python saya hanya mencetak pembolehubah kiraan?

Patricia Arquette
Patricia Arquetteasal
2024-11-10 21:56:02796semak imbas

Why is my Python prime number generator only printing the count variable?

Menyelesaikan masalah Penjana Nombor Perdana Mudah dalam Python

Kod anda direka untuk menjana nombor perdana, tetapi ia menghadapi masalah dan hanya mencetak kiraan pembolehubah. Mari kita terokai sebabnya dan berikan penyelesaian.

Kod berikut dikenal pasti sebagai mempamerkan masalah:

import math

def main():
    count = 3
    one = 1
    while one == 1:
        for x in range(2, int(math.sqrt(count) + 1)):
            if count % x == 0:
                continue
            if count % x != 0:
                print(count)

        count += 1

Terdapat dua masalah utama:

  1. Anda salah mencetak nombor sebagai perdana apabila ia boleh dibahagi dengan 'x'. Anda harus menyemak kebolehbahagi dan bukannya sebaliknya.
  2. Daripada memecahkan gelung dalam apabila kiraan menjadi boleh bahagi dengan 'x', anda meneruskan ke lelaran seterusnya, yang akan membawa kepada penentuan utama yang tidak tepat.

Berikut ialah versi kod yang disemak dengan isu ini dialamatkan:

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

Kod yang dikemas kini ini membetulkan logik untuk memastikan hanya nombor perdana dicetak. Ia menyemak kebolehbahagiaan menggunakan bendera 'is_prime' dan memecahkan gelung dalam jika kiraan menjadi boleh dibahagikan dengan sebarang nilai 'x'.

Atas ialah kandungan terperinci Mengapakah penjana nombor perdana Python saya hanya mencetak pembolehubah kiraan?. 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