Kemarin (18 Maret 2008) dapat tugas baru dari kantor euy! Harus belajar pula bahasa Java. Katanya sih karena bahasa Java adalah bahasa general yang dipake di seluruh operating system. Lumayan butuh perjuangan untuk beralih dari bahasa pemprograman terstruktur ke bahasa pemprograman Objek Oriented. But, inilah tantangan baru walaupun sebenarnya hati lagi kepengen memperdalam bahasa C untuk mikrokontroler.

 

So.. kemarin iseng-iseng buat nyenengin hati and menambah minat belajar Java, bikin program untuk mencari bilangan paling ajaib di dunia ini, yaitu bilangan prima. Kapan-kapan deh diceritain kenapa bisa dibilangan bilangan ajaib! Tapi kalau penasaran coba aja di googling atau baca-baca di wikipedia, dijamin terkesima deh.

 

Btw.. algoritma pencarian bilangan prima yang saya gunakan menggunakan metoda Sieve of Eratosthenes. Ini adalah metoda yang paling mudah untuk mencari bilangan prima. Prinsipnya adalah : mencari suatu bilangan yang hanya bisa dibagi oleh dirinya sendiri dan satu, kemudian mencoret dari daftar bilangan lain yang merupakan kelipatan bilangan prima yang ditemukan. Simple banget sih, tapi ini bukan satu-satunya cara buat mencari bilangan prima.

 

package percobaan;

 

public class Cariprima {

 

/**

* Program ini digunakan untuk mencari bilangan prima

* sebanyak yang diminta.

* Date : 18 Maret 2008 Insan Sains

*/

public static void main(String[] args) {

/* jmlbilprima = Jumlah bilangan prima pertama yang akan dicari

* jmlketemu = jumlah bilangan prima yang saat ini ditemukan

* idx = bilangan yang saat ini sedang dicheck

* isprima = flag yang menunjukkan bahwa bilangan yang dicheck adalah bilangan prima

* prima[] = array yang merupakan kumpulan bilangan prima yang dicari.

*/

int jmlbilprima = 10000;

int jmlketemu = 0;

boolean isprima;

int prima[] = new int[jmlbilprima];

 

/*

* 1 bukan termasuk bilangan prima, jadi lewat saja

* Untuk memudahkan, bilangan prima yang pertama didefinisikan dulu

* Yaitu angka 2.

*/

int idx = 2;

prima[0] = 2;

/* Looping sampai ditemukan bilangan prima sejumlah yang diinginkan

*/

for (jmlketemu = 1; jmlketemu < jmlbilprima; jmlketemu++) {

isprima = false;

// Lakukan sampai ketemu bilangan prima berikutnya.

while (!isprima) {

// Lanjut ke bilangan yang akan diperiksa

idx++;

/* Bagi bilangan yang dicheck dengan bilangan prima yang sudah ketemu

* Periksa sisa baginya

* Bila salah satu hasil (sisa bagi) = kosong, berarti bukan prima

* Maka lanjut ke bilangan yagn dicheck berikutnya

* Bila SEMUA hasil (sisa bagi) = bersisa, berarti bilangan prima

* Maka masukkan bilangan ini sbg bilangan prima.

*/

for (int x = 0; x <= jmlketemu-1; x++) {

if ((idx % prima[x]) != 0) isprima = true;

else {

isprima = false;

break;

}

}

}

// Masukkan hasil bilangan prima yg ketemu ke look up table

prima[jmlketemu] = idx;

System.out.println(jmlketemu + “. “ + idx);

}

// Perlihatkan hasilnya dilayar

for (int x = 1; x <= jmlbilprima; x++) {

System.out.println(x + “. “ + prima[x-1]);

}

}

}

 

Wah.. tapi ada kekurangannya nih, lama banget. Apalagi pas dicobain untuk nyari bilangan prima yang ke sejuta pertama. Nyampe ke bilangan prima yang ke 490.000 aja, udah makan waktu 5 jam lebih. Gimana kalau diterusin? Wah.. komputer kantor bisa stress tuh ^_^ (Tapi kalau untuk mencari bilangan prima yang ke puluhan ribuan mah, dalam hitungan detik sudah bisa ada hasilnya). Jadi kepengen juga nyobain metoda yang lainnya nih! Wah.. hari yang menyenangkan tuh belajar dengan Java.