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.
nurul said:
wah klo’ komputernya stress kasihan dong…. bikin algoritma untuk bilangan prima yang besar donk… makasih ye..
Ibnu said:
Wahhhhhhh………
keren 2……
thanks ya atas ilmu nya
iL said:
Sipp deh ..mkcii yaa
hhe
jd g usah susah2 nyari jwbn nii ^^
loli said:
heheheh tengs bro dah bikin tugasku kelar
yosafat said:
thanks buat javanya. laen kali boleh minta kasih tsu lagi
iwayansudana said:
Thanx bro…sangat membantu tugas dari kampusku…
lam kenal,
rahmat said:
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….
novi said:
makasih,sudah bantu tugasku !!
ajie said:
gilaaaa… bisa ngehank nih laptop
batzmans said:
Pakai bahasa C atau C++ donkk helppp
Albertus Suprianto said:
nggak praktis, kurang kerjaan
Unee said:
klo akar primitif tu pa??
tlg dunkz definisi na…
trz cara cri akar primitif dari bilangan prima tu gmn??
mhon bntuan na…
wira said:
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/
Yogie said:
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
hehe said:
wah keren.. lain kali contohnya sekalian ya.. biar q bisa ngopi juga hehe
iwan said:
wahh, kang pa saya coba aj kok ad error parsing gt, maksudnya ap y?
Deden said:
thanks infonya gan.
kang ada source code buat bilangan pecahan nya?
dimas said:
wadooooo
pusinkkk kang
error program ku
tp thanks yooo
ilmux da takk pelajari
dath said:
sip…………….
^_^