Bilangan Prima (Rekursif) di Java


Definisi bilangan prima tidak lain adalah bilangan asli yang lebih besar dari 1 dan hanya habis dibagi oleh bilangan 1 dan bilangan itu sendiri. Contoh beberapa bilangan prima antara lain, 2, 3, 5, 7, 11, 13…

Nah, berikut ini aku akan share bagaimana membuat aplikasi Java untuk mencari bilangan prima secara rekursif.

/**
 *
 * @author secangkirkopipanas
 */
public class Prima {

    private static int ambilNilaiRekursif(int number, int index) {
        if (index == 1)
            return 1;
        else if (number % index == 0)
            return 1 + ambilNilaiRekursif(number, --index);
        else
            return 0 + ambilNilaiRekursif(number, --index);
    }

    public static boolean cekBilanganPrima(int num) {
        if (num > 1)
            return (ambilNilaiRekursif(num, num) == 2);
        else
            return false;
    }

    public static void main(String[] args) {
        int num = 3000;
        if (cekBilanganPrima(num))
            System.out.println("Bilangan Prima");
        else
            System.out.println("Bukan Bilangan Prima");
    }

}

Semoga bermanfaat!

8 thoughts on “Bilangan Prima (Rekursif) di Java

  1. Pingback: Java: Bilangan Prima secara Rekursif | secangkirkopipanas

  2. Basically… ini primality test berdasarkan division. Lazimnya disebut division test.

    Prinsipnya adalah dengan membagi semua bilangan dari 1 sampai bilangan itu sendiri. Jika banyaknya bilangan yang habis membagi bilangan input tepat sama dengan 2 maka bilangan itu adalah bilangan prima. Hal ini sejalan dengan definisi bilangan prima.

    Namun, implementasi rekursif sepertinya terlalu dipaksakan. Mengingat sifat rekursif yang “overhead” dan dalam implementasi Java menggunakan stack (CMIIW), maka pada bilangan yang sedikit besar saja sudah bisa terlihat StackOverflowError.

    Pada mesin yang saya gunakan, Intel i5 2.5GHZ dan 4GB memory, angka input 8192 sudah menghasilkan StackOverflowError. Saya rasa teknik iteratif biasa sudah cukup untuk algoritma ini.

    Nice post anyway

    Reply
    • Dear Hendra,

      Masukan yang bagus. Memang rekursif tidak disarankan untuk jumlah yang banyak, karena memang bersifat stack. Tapi artikel ini dibuat hanya untuk memberikan pengetahuan tentang cara penggunaan rekursif.

      Tetapi jika ingin melakukan tes dalam jumlah yang besar, bisa menambahkan VM parameter -ss dan -oss untuk menaikkan maksimum stack.

      Sebagai contoh: -ss512k -oss1024k

      Mungkin bisa berguna!

      Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s