Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menjana Nombor Perdana dengan Anggun di Jawa Menggunakan Penapis Eratosthenes?

Bagaimanakah Saya Boleh Menjana Nombor Perdana dengan Anggun di Jawa Menggunakan Penapis Eratosthenes?

Linda Hamilton
Lepaskan: 2025-01-13 06:42:42
asal
662 orang telah melayarinya

How Can I Elegantly Generate Prime Numbers in Java Using the Sieve of Eratosthenes?

Ayak Eratosthenes di Jawa: Hasilkan nombor perdana dengan elegan

Pengenalan

Penjanaan nombor perdana ialah masalah asas dalam sains komputer, dengan pelbagai algoritma untuk dipilih. Antaranya, penapis Eratosthenes terkenal dengan kesederhanaan dan kecekapannya. Artikel ini menyediakan pelaksanaan Java yang elegan yang menggunakan penapis Eratosthenes untuk menjana n nombor perdana pertama.

Ayak Eratosthenes

Ayak Eratosthenes ialah algoritma probabilistik yang mengenal pasti nombor perdana dengan menghapuskan gandaan nombor perdana secara berulang. Ia mula-mula memulakan tatasusunan bendera boolean, setiap bendera mewakili nombor sehingga had yang ditentukan. Algoritma kemudian melelar melalui tatasusunan bermula dengan nombor perdana pertama 2 dan menandakan semua gandaan itu sebagai bukan perdana. Proses ini berterusan sehingga semua nombor dalam had telah dihapuskan, hanya meninggalkan nombor perdana.

Pelaksanaan yang elegan

Pelaksanaan Java yang elegan bagi Sieve of Eratosthenes kelihatan seperti ini:

<code class="language-java">public static BitSet computePrimes(int limit) {
    final BitSet primes = new BitSet();
    primes.set(0, false);
    primes.set(1, false);
    primes.set(2, limit, true);
    for (int i = 2; i * i <= limit; i++) {
        if (primes.get(i)) {
            for (int j = i * i; j <= limit; j += i) {
                primes.set(j, false);
            }
        }
    }
    return primes;
}</code>
Salin selepas log masuk

Penerangan

Pelaksanaan ini mencipta BitSet di mana setiap bit mewakili nombor sehingga had yang ditentukan. Pada mulanya, 0 dan 1 ditandakan sebagai bukan perdana dan semua nombor lain ditandakan sebagai perdana.

Gelung luar berulang melalui tatasusunan bermula dari nombor perdana pertama 2. Jika bit pada kedudukan semasa ditetapkan (menunjukkan bahawa ia adalah perdana), gelung dalam menandakan semua gandaan nombor perdana itu sebagai bukan perdana. Proses ini berterusan sehingga semua nombor dalam had telah dihapuskan.

Akhir sekali, kembalikan BitSet yang mengandungi nombor perdana.

Kesimpulan

Pelaksanaan Java Sieve of Eratosthenes ini menunjukkan keanggunan dan kesederhanaan algoritma. Ia menjana nombor perdana dengan cekap dan mempunyai struktur logik yang jelas. Kod ini dioptimumkan untuk prestasi dan kefahaman, menjadikannya alat yang berharga untuk pengaturcara yang memerlukan penjana nombor perdana.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Nombor Perdana dengan Anggun di Jawa Menggunakan Penapis Eratosthenes?. 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