Periksa Jika Nombor Adalah Perdana di Jawa

1. Pengenalan

Pertama, mari kita bahas beberapa teori asas.

Ringkasnya, nombor adalah utama jika hanya dibahagi satu dan nombor itu sendiri. Nombor bukan perdana dipanggil nombor komposit. Dan nombor satu tidak utama atau komposit.

Dalam artikel ini, kita akan melihat cara yang berbeza untuk memeriksa keunggulan nombor di Java.

2. Pelaksanaan Tersuai

Dengan pendekatan ini, kita dapat memeriksa apakah nombor antara 2 dan (punca kuasa dua nombor) dapat membahagi nombor dengan tepat.

Logik berikut akan kembali benar jika nombor itu utama:

public boolean isPrime(int number) { return number > 1 && IntStream.rangeClosed(2, (int) Math.sqrt(number)) .noneMatch(n -> (number % n == 0)); }

3. Menggunakan BigInteger

Kelas BigInteger umumnya digunakan untuk menyimpan bilangan bulat berukuran besar, iaitu yang lebih besar daripada 64 bit. Ini menyediakan beberapa API berguna untuk bekerja dengan nilai int dan panjang .

Salah satu API tersebut ialah isProbablePrime . API ini kembali palsu jika nombor itu pasti adalah gabungan dan kembali benar jika ada kemungkinan ia menjadi utama. Ia berguna ketika berhadapan dengan bilangan bulat besar kerana pengiraannya cukup intensif untuk mengesahkannya sepenuhnya.

Catatan sampingan yang cepat - is isProbablePrime API menggunakan apa yang dikenali sebagai ujian primer "Miller - Rabin dan Lucas - Lehmer" untuk memeriksa sama ada nombor itu mungkin utama. Sekiranya bilangannya kurang dari 100 bit, hanya ujian "Miller - Rabin" yang digunakan, jika tidak, kedua-dua ujian digunakan untuk memeriksa keunggulan nombor.

Uji "Miller-Rabin" mengulangi bilangan kali yang tetap untuk menentukan keutamaan nombor dan jumlah lelaran ini ditentukan oleh pemeriksaan sederhana yang melibatkan panjang bit nombor dan nilai kepastian yang diteruskan ke API:

public boolean isPrime(int number) { BigInteger bigInt = BigInteger.valueOf(number); return bigInt.isProbablePrime(100); }

4. Menggunakan Matematik Apache Commons

Apache Commons Math API menyediakan kaedah bernama org.apache.commons.math3.primes.Primes, yang akan kami gunakan untuk memeriksa keunggulan nombor.

Pertama, kita perlu mengimport perpustakaan Apache Commons Math dengan menambahkan kebergantungan berikut di pom.xml kami :

 org.apache.commons commons-math3 3.6.1 

Versi terbaru dari commons-math3 boleh didapati di sini.

Kami boleh melakukan pemeriksaan hanya dengan memanggil kaedah:

Primes.isPrime(number);

5. Kesimpulan

Dalam penulisan ringkas ini, kami telah melihat tiga cara untuk memeriksa keutamaan nombor tersebut.

Kod untuk ini boleh didapati di pakej com.baeldung.algorithms.primechecker di Github.