Mengejar keanggunan: amalan terbaik untuk penjanaan nombor perdana dalam C# atau Java
Penjanaan nombor perdana sentiasa menjadi topik yang telah lama diterokai oleh pengaturcara Cara mencapai keseimbangan antara kelajuan dan kejelasan kod telah menjadi kunci kepada reka bentuk algoritma. Artikel ini meneroka cara elegan untuk menjana nombor perdana dalam C# atau Java.
Ayak Eratosthenes yang Diperbaiki
Ayak Eratosthenes adalah salah satu kaedah biasa untuk mencari nombor perdana. Dengan mengalih keluar gandaan setiap nombor perdana secara berulang, kami boleh menapis semua nombor bukan perdana. Kod berikut ialah penambahbaikan pada algoritma ayak standard:
<code class="language-c#">public static List<int> GeneratePrimes(int limit) { if (limit < 2) return new List<int>(); var primes = new bool[limit + 1]; for (int i = 2; i * i <= limit; i++) { if (!primes[i]) { for (int j = i * i; j <= limit; j += i) { primes[j] = true; } } } var result = new List<int>(); for (int i = 2; i <= limit; i++) { if (!primes[i]) { result.Add(i); } } return result; }</code>
Penjanaan nombor perdana berdasarkan LINQ
Pendekatan lain ialah memanfaatkan ciri penilaian malas LINQ. Kod ini mengembalikan urutan nombor perdana yang tidak terhingga:
<code class="language-c#">public static IEnumerable<int> GeneratePrimesLINQ() { yield return 2; yield return 3; var primes = new HashSet<int> { 2, 3 }; for (int i = 5; ; i += 2) { if (!primes.Any(p => i % p == 0)) { primes.Add(i); yield return i; } } }</code>
Pemilihan kaedah
Kaedah yang manakah untuk dipilih bergantung pada senario aplikasi tertentu. Sieve of Eratosthenes yang diubah suai adalah cekap dalam mencari nombor tetap nombor perdana, manakala kaedah berasaskan LINQ menyediakan urutan tak terhingga malas yang sesuai untuk pemprosesan tambahan. Akhirnya, penyelesaian yang paling elegan ialah penyelesaian yang memenuhi keperluan tertentu dengan jelas dan cekap.
Atas ialah kandungan terperinci Apakah Cara Paling Elegan untuk Menjana Nombor Perdana dalam C# atau Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!