“Dalam matematika, bilangan prima adalah bilangan asli yang lebih besar dari angka 1, yang faktor pembaginya adalah 1 dan bilangan itu sendiri.” (Wikipedia)

Sejak SD kita telah tahu bahwa bilangan prima adalah 2, 3, 5, 7, 11, 13, dan seterusnya, tapi tidak semua orang bisa membuat program untuk mencari bilangan prima. Padahal, salah seorang temanku bercerita, ketika melamar kerja, dia dités untuk membuat programnya!

Idenya begini. Bila kita ingin tahu apakah 11 adalah bilangan prima ataukah bukan, maka kita harus mencoba membagi 11 dengan 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, dan 11. Contoh:

  • 11 dibagi 1 hasilnya adalah 11 sisa 0.
  • 11 dibagi 2 hasilnya adalah 5 sisa 1.
  • 11 dibagi 3 hasilnya adalah 3 sisa 2.
  • 11 dibagi 4 hasilnya adalah 2 sisa 3.
  • 11 dibagi 5 hasilnya adalah 2 sisa 1.
  • 11 dibagi 6 hasilnya adalah 1 sisa 5.
  • 11 dibagi 7 hasilnya adalah 1 sisa 4.
  • 11 dibagi 8 hasilnya adalah 1 sisa 3.
  • 11 dibagi 9 hasilnya adalah 1 sisa 2.
  • 11 dibagi 10 hasilnya adalah 1 sisa 1.
  • 11 dibagi 11 hasilnya adalah 1 sisa 0.

Dari perhitungan di atas, terlihat bahwa yang sisanya 0 hanyalah 11 dibagi 1 dan 11 dibagi 11. Faktor pembaginya hanya ada 2. Artinya 11 adalah bilangan prima.

Bila dihitung secara manual, mencari bilangan prima dari 1 sampai 1000 jelas melelahkan. Tapi bila dibantu komputer, hanya perlu waktu 1 detik saja.

Beranjak dari pemikiran inilah, saya mencoba membuat program pencari bilangan prima dalam bahasa Java, dengan pendekatan OOP (Object Oriented Programming).

Caranya:

  1. Ketik atau copas (copy paste) listring di bawah ini.
  2. Simpan dengan nama Prima.java (perhatikan huruf besar dan kecilnya).
  3. Compile dengan perintah: javac Prima.java
  4. Jalankan dengan perintah: java Prima
/* -------------------------------
   Program mencari bilangan prima.
   Dibuat oleh Mawan A. Nugroho.
   Tanggal 21 Februari 2017.
   ------------------------------- */

class Prima {
	protected int bilangan;

	// True jika "bilangan" habis dibagi "angka".
	private boolean habisDibagi(int angka) {
		return((this.bilangan % angka) == 0);
	}

	// True jika "bilangan" adalah bilangan prima.
	private boolean adalahPrima() {
		int hitung, jumlah = 0;
		// Coba dibagi dengan seluruh bilangan di bawahnya.
		for (hitung = 1; hitung <= bilangan; hitung++) {
			if (habisDibagi(hitung)) jumlah++;
			// Faktor pembaginya lebih dari 2.
			// Pasti bukan bilangan prima. Hentikan.
			if (jumlah > 2) break;
		};
		// Bilangan prima adalah bilangan yang faktor
		// pembaginya hanya 1 dan dirinya sendiri.
		if (jumlah == 2) return(true);
		else return(false);
	}

	private void cekPrima() {
		if (adalahPrima()) System.out.print(bilangan + "\t");
	}

	public static void main(String[] args) {
		Prima objek = new Prima();

		for (objek.bilangan = 0; objek.bilangan <= 100; objek.bilangan++) {
			objek.cekPrima();
		}
	}
}