Rabu, 12 Oktober 2011

Bilangan Prima dengan JAVA

Bilangan prima adalah Suatu bilangan asli yang dimulai dari 2, dimana bilangan ini adalah bilangan yang tidak habis dibagi dengan bilangan apapun dibawahnya kecuali dibagi dengan satu dan bilangan itu sendiri. Begitu pemahaman yang saya ambil dari pengertian bilangan prima. Mari kita coba ambil sebuah angka dan coba memeriksanya dengan pemahaman yang saya dapat, misal kita ambil angka 15, apakah angka 15 adalah bilangan prima ? Pemeriksaan kita, akan kita urutkan seperti ini :
  1. Apakah 15 lebih besar sama dengan 2 (15 >= 2 ) ?, sebab salah syarat pertama bilangan prima adalah bilangan asli yang dimulai dari 2.
  2. Apakah 15 akan habis dibagi dengan bilangan-bilangan yang dimulai dari 2 sampai dengan 14 ?, sebab syarat bilangan prima yang lain adalah bilangan yang tidak habis dibagi dengan bilangan apapun dibawahnya kecuali satu dan dirinya sendiri.
Ok kita mulai pemeriksaan kita satu demi satu, untuk pemeriksaan pada tahap yang pertama 15 lolos, artinya 15 memang lebih besar dari pada 2, kemudian kita lanjutkan dengan pemeriksaan tahao ke dua. Apakah 15 habis jika di bagi dengan 2, hasilnya 15 tidak habis di bagi dengan 2, karena 15/2= 7 dan sisa 1. Pemeriksaan kita lanjutkan dengan membagi lagi 15 dengan 3, pada pembagian yang ini 15 jelas bukanlah bilangan prima, sebab 15 dibagi dengan 3, habis, 15/3 = 5, habis tidak ada sisa. Jelas 15 bukanlah bilangan prima sebab 15 habis di bagi dengan 3.
Sekarang kita akan ambil satu bilangan lagi yaitu 17, dan kita akan coba periksa lagi dengan metode yang sama dengan ketika kita mencari bilangan prima untuk angka 15. Untuk pemeriksaan pertama bilangan 17 pasti lolos sebab 17 lebih besar dari pada 2, dan untuk pemeriksaan ke dua, kita lihat seperti gambar di bawah ini :
17 / 2 = 8 sisa 1
17 / 3 = 5 sisa 2
17 / 4 = 4 sisa 1
17 / 5 = 3 sisa 1
17 / 6 = 2 sisa 5
17 / 7 = 2 sisa 3
17 / 8 = 2 sisa 1
17 / 9 = 1 sisa 8
17 / 10 = 1 sisa 7
17 / 11 = 1 sisa 6
17 / 12 = 1 sisa 5
17 / 13 = 1 sisa 4
17 / 14 = 1 sisa 3
17 / 15 = 1 sisa 2
17 / 16 = 1 sisa 1
Pada gambar diatas, kita bisa melihat bahwa 17 itu selalu sisa jika dibagi dengan bilangan apapun dibawah bilangan 17 kecuali 1 dan 17 itu sendiri. Dari situ kita bisa simpulkan bahwa 17 adalah bilangan prima.
Bagaimana jika dengan tahap – tahap tersebut kita mencoba membuat aplikasi java yang mampu memeriksa sebuah bilangan apakah bilangan tersebut merupakan bilangan prima atau bukan. Ok, jika kita akan membuat sebuah program yang mampu memeriksa sebuah bilangan adalah bilangan prima atau bukan, seperti inilah kode-kode progamnya:
package org.mojo.blog.app.integer; //ignore this, if this program is not on package

public class isPrimeApplication {

public static void main(String[] args) {
    int valueToCheck = 17; // value to check
    boolean isPrime = false;
    if (valueToCheck >= 2) {
        isPrime = true; // first check and assume it's prime number
        // try divide valueToCheck
        // with all number less than it self
        // and begining from 2
       for (int i = 2; i < valueToCheck; i++) {
        if (valueToCheck % i == 0) {
                //if divides exactly so stop the loop and it must be not prime
                isPrime = false;
                break; // no need to check again
            }
        }
    }
    System.out.println("is " + valueToCheck + " Prime ? ");
    System.out.println("the answer is " + isPrime);
}
}
Dalam kode di atas kita bisa melihat bahwa kita punya dua variabel, valueToCheck dan isPrime, sementara flow process kita buat mirip skenario tahap-tahap pengecekan, dimana :
  1. if(valueToCheck > = 2) adalah pengecekan tahap pertama, dimana semua angka yang masuk dalam blok ini akan sementara kita asumsikan adalah bilangan prima (isPrime = true).
  2. for (int i = 2; i <>Kemudian kita melakukan looping mulai dari 2 sampai dengan bilangan yang ingin di cek diambil 1 (valueToCheck – 1 ). Kemudian kita melakukan pemeriksaan apabila dari rangkaian looping cek tsb ada yang menghasilkan pembagian dengan tidak ada sisa, maka kita sudahi pemeriksaan, dan bilangan tsb pasti bukan bilangan prima.
Hmm, bagaimana jika program tsb kita kembangkan lagi menjadi sebuah program yang mampu mencari bilangan-bilangan prima dari suatu range bilangan, misal mencari bilangan-bilangan prima yang lebih kecil dari 50. Sepertinya secara logika kita bisa membuatnya dengan hanya menambahkan suatu looping saja sebelum looping yang ada di atas. Ok mari kita coba, perhatikan kode-kode berikut ini.
package org.mojo.blog.app.integer; //ignore this, if this program is not on package

public class PrimeAdvance {

 public static void main(String[] args) {
//      int valueToCheck = 17; // value to check
     int nRange = 50;
     boolean isPrime = false;

     for (int i = 2; i <= nRange; i++) {
         if (i >= 2) {
             isPrime = true; // first check and assume it's prime number
             // try divide valueToCheck
             // with all number less than it self
             // and begining from 2
             for (int j = 2; j < i; j++) {
                 if (i % j == 0) {
                     //if divides exactly so stop the loop and it must be not prime
                     isPrime = false;
                     break; // no need to check again
                 }
             }
         }
         if(isPrime){
             System.out.println(i);}
     }
     //System.out.println("is " + valueToCheck + " Prime ? ");
     //System.out.println("the answer is " + isPrime);
 }
}
Pada kode diatas kita bisa melihat bahwa kita cukup menambahkan logika satu buah looping diatas looping yang ada sebelumnya, kemudian kita menambahkan baris, jika i adalah bilangan prima maka cetaklah ke atas konsol. Namun baris yang memerintahkan program untuk mencetak ke atas konsol kita letakkan di dalam looping range data yang ingin kita periksa.
Demikianlah, sedikit cerita tentang eksplorasi keingintahuan saya terhadap bilangan prima, yang berdasarkan senggolan cerita dari seorang teman. Silahkan di gunakan jika memang bermanfaat dan silahkan juga dikembangkan jika memang anda mempunyai ide-ide baru yang lain.
Semoga bermanfaat

artikel ini saya dapatkan dari http://blog.josescalia.net/2009/01/mencari-bilangan-prima-dengan-aplikasi.html

0 komentar:

Posting Komentar

© 2012 -adi | caca | Blogger Template HTML 5 | Designed by kimzigr | Using The 1KB Grid | Powered by Blogger