Pemetaan Nombor Perdana yang Cekap dalam Julat Terhad
Dalam bidang sains komputer, mengenal pasti nombor perdana dalam julat tertentu adalah tugas biasa . Matlamatnya ialah untuk mencipta struktur data yang memetakan nombor dengan cekap kepada status "prima" mereka.
Satu pendekatan ialah menggunakan fungsi Boolean isprime(n). Walau bagaimanapun, untuk penggunaan memori yang optimum, struktur data tersuai adalah wajar. Untuk julat (1, N], di mana N ialah pemalar, pertimbangan berikut adalah penting:
Ayak Variasi Eratosthenes
Ayak klasik Eratosthenes boleh disesuaikan untuk mewakili nombor ganjil sahaja, mengurangkan penggunaan memori Walau bagaimanapun, pendekatan ini masih termasuk bit yang tidak diperlukan untuk gandaan lima.
Algoritma Dioptimumkan
Algoritma yang lebih cekap yang dicadangkan oleh. AKS menyediakan ujian perdana terpantas untuk kes umum Walau bagaimanapun, ia mungkin tidak sesuai untuk mencari bilangan prima dalam julat terhad.
Pelaksanaan Python
Untuk tujuan praktikal, a Pelaksanaan Python tersedia:
<code class="python">def isprime(n): 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 menggunakan fakta bahawa bilangan prima (selain daripada 2 dan 3) adalah sama ada daripada bentuk 6k - 1 atau 6k 1. Ia mencari pembahagi bentuk ini sahaja.
Pilihan Tambahan
Untuk kelajuan, ujian pseudo-prima berdasarkan teorem Fermat boleh digunakan, terutamanya apabila julat adalah terhad, bagaimanapun, prapengiraan positif palsu (nombor Carmichael ) boleh meningkatkan lagi kelajuan dengan memanfaatkan carian binari.
Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Memetakan Nombor Perdana Dengan Cekap Dalam Julat Terhad?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!