Rumah > pembangunan bahagian belakang > C++ > Apakah Cara Paling Elegan untuk Menjana Nombor Perdana dalam C# atau Java?

Apakah Cara Paling Elegan untuk Menjana Nombor Perdana dalam C# atau Java?

Mary-Kate Olsen
Lepaskan: 2025-01-13 10:43:43
asal
429 orang telah melayarinya

What's the Most Elegant Way to Generate Prime Numbers in C# or Java?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan