Keperluan untuk pelaksanaan fungsi penjanaan nombor perdana yang ringkas dan boleh dibaca sering ditemui dalam pengaturcaraan. Satu fungsi sedemikian, generatePrimes, bertujuan untuk menghasilkan senarai n nombor perdana pertama, menimbulkan persoalan tentang pendekatan mana yang menawarkan paling keanggunan.
Satu kaedah biasa melibatkan kaedah yang mudah pendekatan berulang, bermula dengan senarai yang mengandungi beberapa nombor perdana pertama (2, 3), dan secara berperingkat menambah perdana seterusnya sambil mengesahkan keutamaan. Walaupun berfungsi, pelaksanaan ini mungkin tidak mempunyai keanggunan kerana struktur gelung eksplisitnya dan potensi untuk semakan verbose.
Penyelesaian yang lebih elegan adalah menggunakan algoritma penapis, seperti Penapis Eratosthenes. Kaedah ini memulakan tatasusunan boolean yang mewakili potensi keutamaan nombor sehingga had yang ditentukan. Bermula dari 2, ia secara berulang menandakan gandaan setiap nombor perdana sebagai bukan perdana, dengan berkesan menghapuskannya daripada senarai.
<code class="java">BitSet computePrimes(int limit) { BitSet primes = new BitSet(); primes.set(0, false); primes.set(1, false); primes.set(2, limit, true); for (int i = 0; i * i < limit; i++) { if (primes.get(i)) { for (int j = i * i; j < limit; j += i) { primes.clear(j); } } } return primes; }</code>
Pendekatan ini menggabungkan kesederhanaan dengan kecekapan, menghasilkan pelaksanaan yang elegan.
Untuk keanggunan yang lebih hebat, anggaran bilangan prima sehingga had tertentu boleh digunakan. Anggaran ini, yang diperoleh daripada Teorem Nombor Perdana, memberikan batas atas pada potensi bilangan prima dalam julat tersebut. Menggunakan anggaran ini untuk menentukan saiz penapis meningkatkan lagi keanggunan penyelesaian.
Gabungan anggaran matematik dan algoritma ayak menawarkan keanggunan dan kecekapan, menjadikannya pilihan yang menarik untuk menjana nombor perdana.
Atas ialah kandungan terperinci Bagaimana Kita Boleh Menjana Nombor Perdana dengan Keanggunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!