Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memetakan Nombor Perdana dengan Cekap dalam Julat?

Bagaimana untuk Memetakan Nombor Perdana dengan Cekap dalam Julat?

Barbara Streisand
Barbara Streisandasal
2024-11-04 20:20:02267semak imbas

How to Efficiently Map Prime Numbers within a Range?

Memetakan Nombor Perdana dengan Cekap dalam Julat

Menentukan nombor perdana dalam julat yang ditentukan ialah tugas pengaturcaraan biasa. Untuk mengoptimumkan penggunaan memori untuk tugas ini, kami mencari algoritma yang mencipta struktur data paling padat yang mewakili nombor perdana untuk julat tertentu (1, N].

Algoritma Cadangan untuk Pemetaan Julat Perdana

Algoritma yang paling berkesan untuk ujian utama am ialah algoritma AKS Walau bagaimanapun, untuk tujuan praktikal dalam julat terhad, varian algoritma O(sqrt(N)) klasik berikut boleh menyediakan penyelesaian yang cekap:

def isprime(n):
    if n == 2 or n == 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False
    # Check prime divisors of the form 6k - 1 and 6k + 1
    i = 5
    w = 2
    while i * i <= n:
        if n % i == 0:
            return False
        i += w
        w = 6 - w
    return True

Analisis Algoritma

Algoritma ini bergantung pada fakta bahawa semua nombor perdana yang lebih besar daripada 3 adalah sama ada dalam bentuk 6k - 1 atau 6k 1. Dengan melelaran melalui pembahagi perdana yang berpotensi dalam corak ini, algoritma mengenal pasti nombor bukan perdana dengan cekap.

Pertimbangan Tambahan

Untuk lebih kelajuan, terutamanya apabila julat terhad , melaksanakan ujian pseudo-prima berdasarkan teorem kecil Fermat boleh berkesan Walau bagaimanapun, pendekatan ini mempunyai had julat.

Pengoptimuman Utama

Pengoptimuman yang paling ketara dalam. algoritma ini adalah penyingkiran semua nombor genap sebagai potensi perdana. Pengoptimuman ini mengurangkan dengan ketara bilangan semakan yang diperlukan, yang membawa kepada prestasi yang lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk Memetakan Nombor Perdana dengan Cekap dalam Julat?. 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