Rumah > Java > javaTutorial > teks badan

Bagaimanakah Kita Boleh Menjana Nombor Perdana dengan Cekap?

Patricia Arquette
Lepaskan: 2024-11-03 20:43:02
asal
175 orang telah melayarinya

How Can We Efficiently Generate Prime Numbers?

Jana Nombor Perdana dengan Keanggunan dan Kecekapan

Dalam bidang pengaturcaraan, mencari cara yang elegan dan cekap untuk menjana nombor perdana adalah perkara klasik cabaran. Mari kita terokai pendekatan yang menyeimbangkan antara keringkasan dan prestasi.

Pertimbangkan untuk menggunakan teorem nombor perdana, yang menganggarkan bilangan prima kurang daripada atau sama dengan n sebagai pi(n) ≈ n / log(n) . Anggaran ini memberikan batas atas pada saiz ayak yang boleh digunakan untuk mengenal pasti nombor perdana.

Kaedah ayak, juga dikenali sebagai Ayak Eratosthenes, berulang melalui julat nombor dan menghapuskan semua bukan- bilangan prima dengan menandakannya sebagai komposit. Untuk tugasan ini, kita boleh menggunakan BitSet untuk mewakili set nombor perdana, dengan setiap bit sepadan dengan nombor dalam julat.

Di bawah ialah pelaksanaan Java bagi kaedah penjanaan nombor perdana yang elegan dan cekap ini:

<code class="java">public static 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>
Salin selepas log masuk

Kaedah ini menjana sejuta prima pertama dengan cekap dalam kira-kira satu saat pada komputer riba biasa. Gabungan ketepatan dan kelajuan menjadikannya alat yang berharga untuk menjana nombor perdana dalam pelbagai senario pengkomputeran.

Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Menjana Nombor Perdana dengan Cekap?. 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