Rumah > pembangunan bahagian belakang > Tutorial Python > Apakah Cara Terpantas untuk Mencari Semua Nombor Perdana Di Bawah Nombor N Diberikan dalam Python?

Apakah Cara Terpantas untuk Mencari Semua Nombor Perdana Di Bawah Nombor N Diberikan dalam Python?

Patricia Arquette
Lepaskan: 2024-12-21 09:28:09
asal
795 orang telah melayarinya

What's the Fastest Way to Find All Prime Numbers Below a Given Number N in Python?

Cara Terpantas untuk Menyenaraikan Semua Perdana Di Bawah N

Dalam Python, terdapat beberapa algoritma yang cekap untuk menyenaraikan semua nombor perdana di bawah nombor N yang diberikan . Salah satu algoritma terpantas ialah Sieve of Atkin, yang menggunakan gabungan operasi penapisan dan aritmetik untuk mengenal pasti nombor perdana.

Algoritma Cekap Lain

Selain Sieve of Atkin, algoritma cekap lain untuk menyenaraikan nombor perdana termasuk:

  • Algoritma Rho
  • Algoritma Sundaram
  • Keutamaan AKS ujian
  • Ujian keutamaan Miller-Rabin

Memilih Algoritma yang Tepat

Algoritma terbaik untuk aplikasi khusus anda akan bergantung pada saiz N dan kelajuan yang dikehendaki. Untuk nilai kecil N, Sieve of Eratosthenes ialah pilihan yang mudah dan cekap. Untuk nilai N yang lebih besar, Sieve of Atkin atau salah satu daripada algoritma lain yang dinyatakan di atas mungkin lebih sesuai.

Berikut ialah pelaksanaan Python bagi Sieve of Atkin:

def sieve_of_atkin(limit):
    """Return a list of prime numbers up to the given limit."""

    # Create a list of all integers up to the given limit.
    numbers = list(range(limit + 1))

    # Mark 0 and 1 as non-prime.
    numbers[0] = numbers[1] = 0

    # Iterate over all odd numbers up to the square root of the limit.
    for i in range(3, int(limit**0.5) + 1, 2):

        # If i is prime, mark all multiples of i as non-prime.
        if numbers[i]:
            for j in range(i * i, limit + 1, i * 2):
                numbers[j] = 0

    # Return the list of prime numbers.
    return [number for number in numbers if number]
Salin selepas log masuk

Pertimbangan Tambahan

  • Untuk nilai N yang lebih besar, mungkin perlu menggunakan lebih banyak algoritma canggih, seperti Sieve of Sundaram atau sieve of Eratosthenes.
  • Pilihan algoritma juga boleh dipengaruhi oleh faktor lain, seperti ketersediaan memori dan ketepatan yang diingini.

Atas ialah kandungan terperinci Apakah Cara Terpantas untuk Mencari Semua Nombor Perdana Di Bawah Nombor N Diberikan dalam Python?. 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