Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menentukan Pemetaan Perdana Paling Padat untuk Julat (1, N)?

Bagaimana untuk Menentukan Pemetaan Perdana Paling Padat untuk Julat (1, N)?

Barbara Streisand
Barbara Streisandasal
2024-11-04 03:29:29551semak imbas

How to Determine the Most Compact Prime Mapping for a Range (1, N)?

Menentukan Pemetaan Perdana Padat Optimum untuk Julat (1, N)

Mencari pemetaan perdana yang paling padat boleh menjadi tugas yang mencabar. Algoritma yang ideal akan menghasilkan struktur data dengan penggunaan memori terendah untuk julat tertentu (1, N).

Satu pendekatan yang berpotensi ialah algoritma AKS, yang dianggap paling pantas untuk ujian perdana am. Untuk bilangan prima yang besar, meneroka bilangan prima dengan bentuk khas, seperti bilangan prima Mersenne, mungkin bermanfaat.

Walau bagaimanapun, untuk ujian prima tujuan umum dalam julat terhad, algoritma yang lebih praktikal dan cekap boleh digunakan:

<code class="python">def isprime(n):
    """Returns True if n is prime."""
    if n == 2 or n == 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False

    i = 5
    w = 2

    while i * i <= n:
        if n % i == 0:
            return False

        i += w
        w = 6 - w

    return True</code>

Algoritma ini memanfaatkan fakta bahawa nombor perdana (kecuali 2 dan 3) adalah sama ada dalam bentuk 6k - 1 atau 6k 1. Ia dengan cekap memeriksa pembahagi dalam julat ini, menjadikannya sesuai untuk menentukan keprimaan dalam selang waktu yang ditentukan.

Jika kelajuan diutamakan dan julat ditakrifkan dengan baik, laksanakan ujian pseudo-prima berdasarkan Fermat's sedikit teorem boleh meningkatkan lagi kecekapan. Prapengiraan positif palsu (nombor Carmichael) dan menggunakan carian binari menyediakan pendekatan yang lebih pantas, tetapi ia datang dengan pengehadan julat terhad.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Pemetaan Perdana Paling Padat untuk Julat (1, N)?. 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