Mencari Bilangan Prima (Java)
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.
wah klo’ komputernya stress kasihan dong…. bikin algoritma untuk bilangan prima yang besar donk… makasih ye..
nurul
April 1, 2008 at 7:06 am
Wahhhhhhh………
keren 2……
thanks ya atas ilmu nya
Ibnu
Agustus 26, 2008 at 1:39 pm
Sipp deh ..mkcii yaa
hhe
jd g usah susah2 nyari jwbn nii ^^
iL
Oktober 17, 2008 at 11:33 pm
heheheh tengs bro dah bikin tugasku kelar
loli
Oktober 19, 2008 at 12:59 pm
thanks buat javanya. laen kali boleh minta kasih tsu lagi
yosafat
Oktober 24, 2008 at 1:13 pm
Thanx bro…sangat membantu tugas dari kampusku…
lam kenal,
iwayansudana
Desember 16, 2008 at 2:25 am
thnk ya bos ilmu’y, berguna bgt nh buat tugas…
klo da tips n’ trik buat tampilan bloger biar keren gmna ya? mklum pndtg baru di dunia maya….
rahmat
Desember 22, 2008 at 10:57 am
makasih,sudah bantu tugasku !!
novi
Desember 23, 2008 at 9:16 am
gilaaaa… bisa ngehank nih laptop
ajie
Januari 22, 2009 at 8:10 am
Pakai bahasa C atau C++ donkk helppp
batzmans
Februari 12, 2009 at 5:37 am
nggak praktis, kurang kerjaan
Albertus Suprianto
Maret 6, 2009 at 3:27 pm
klo akar primitif tu pa??
tlg dunkz definisi na…
trz cara cri akar primitif dari bilangan prima tu gmn??
mhon bntuan na…
Unee
Maret 27, 2009 at 10:55 am
wah, mencari bilangan prima ada metodenya ya? lumayan nih menambah ilmu. Tapi saya belum mengerti algoritma diatas..
*baca dulu
Tapi kayaknya sama dengan logika saya sih
http://wirautama.net/menentukan-bilangan-prima/
wira
April 3, 2009 at 5:03 am
Maaf permisi, bukannya kalau bilangan yang di modulus 2 selain 0 itu bilangan ganjil?
Bilangan prima itu kan semua bilangan yang tidak bisa dibagi oleh smua bilangan kecuali bilangan itu sendiri dan 1, dalam artian prima itu kalau dibagi ga bilangan bulat kecuali sama bilangan itu sendiri dan 1,
kalau pemrogaman diatas itu smua bilangan ganjil kan?..
9 itu bukan prima, tapi 9 mod 2 == 1;
iya kan?..
Maaf kalau saya salah.. terimakasih
Yogie
April 16, 2009 at 5:14 am
wah keren.. lain kali contohnya sekalian ya.. biar q bisa ngopi juga hehe
hehe
Agustus 29, 2009 at 3:20 am