You are on page 1of 4

Mencari Bilangan Prima Dengan Bahasa C

Salah satu hal yang sering bikin pusing dalam dunia matematika adalah menentukan
apakah suatu bilangan merupakan bilangan prima atau bukan. Kali ini akan diberikan contoh
program untuk mencari atau memeriksa apakah suatu bilangan termasuk ke dalam bilangan
prima.
Sebagaimana telah diketahui, bilangan prima adalah suatu bilangan yang hanya habis
dibagi 1 dan bilangan itu sendiri. Bilangan 1 karena merupakan faktor pembagi tidak dapat
disebut bilangan prima. Kemudian sebagai titik tolak perhitungan, bilangan prima yang
terkecil harus diketahui. Dalam hal ini akan diambil bilangan 2 dan 3 sebagai bilangan prima
yang terkecil. Bilangan 2 merupakan bilangan prima yang unik karena merupakan satu-
satunya bilangan prima yang genap. Bilangan prima yang lain pastilah gasal (ganjil).
Nah, langsung saja, program untuk mencari bilangan prima tersebut diberikan pada
listing 1.

Listing 1. Mencari bilangan prima

#include <stdio.h>

main()
{
int bilangan;
int prima;
int cekprima();

clrscr();
printf("======================\n");
printf("MENCARI BILANGAN PRIMA\n");
printf("======================\n\n");
printf("Masukkan sebuah bilangan integer : ");
scanf("%d",&bilangan);
prima = cekprima(bilangan);
if (prima == 1)
{
printf("Bilangan %d adalah bilangan prima",bilangan);
} else {
printf("Bilangan %d bukan bilangan prima",bilangan);
}
}

int cekprima(bil)
int bil;
{
int bagi=3;
int batas;
if (bil == 1)
{
return(0);
} else if (bil==2||bil==3) {
return(1);
} else if (bil % 2 == 0) {
return(0);
} else {
while (batas > bagi)
{
if (bil % bagi == 0)
{
printf("Karena habis dibagi %d\n",bagi);
return(0);
break;
}
batas = bil / bagi;
bagi += 2;
}
return(1);
}
}

Jika program tersebut dijalankan, hasilnya akan terlihat seperti gambar 1.


Pada prinsipnya, inti dari program tersebut terletak pada fungsi cekprima(). Jika
fungsi cekprima() menghasilkan nilai 1, berarti bilangan yang diperiksa adalah bilangan
prima. Sebaliknya dengan mudah dapat diterka bahwa jika fungsi cekprima() menghasilkan
nilai 0, maka bilangan yang diperiksa bukan merupakan bilangan prima.
Mula-mula fungsi cekprima() akan memeriksa apakah bilangan yang diinputkan
adalah bilangan 1. Jika ya, maka fungsi akan menghasilkan nilai 0. Selanjutnya diperiksa
apakah bilangan yang diinputkan adalah 2 atau 3 (ingat, kedua bilangan tersebut diambil
sebagai patokan). Jika ya, maka sudah pasti kedua bilangan tersebut adalah bilangan prima.
Jadi fungsi akan menghasilkan nilai 1.
Berikutnya diperiksa apakah bilangan yang diinputkan merupakan bilangan genap.
Suatu bilangan merupakan bilangan genap apabila habis dibagi 2. Oleh karena itu dalam
program dituliskan bil % 2 == 0. Ingat, tanda % berarti modulus yaitu operand yang
menghitung nilai sisa hasil bagi. Jika suatu bilangan merupakan bilangan genap, sudah pasti
bilangan tersebut bukan bilangan prima.
Yang ketiga, jika bilangan yang diinputkan bukan 2, 3, atau bilangan genap, maka
dilakukan pemeriksaan apakah bilangan tersebut habis dibagi oleh suatu bilangan yang
dimasukkan dalam variabel bagi. Karena merupakan bilangan gasal, maka bilangan pembagi
sudah pasti bilangan gasal juga. Oleh sebab itu diambil nilai 3 sebagai nilai awal variabel bagi.
Jika bilangan tersebut tidak habis dibagi 3, diperiksa apakah bilangan tersebut habis dibagi 5.
Jika tidak, diperiksa apakah bilangan tersebut habis dibagi 7. Itu sebabnya pada program
tersebut terdapat baris bagi += 2. Namun jika dilakukan pemeriksaan pada semua bilangan
gasal yang mungkin digunakan sebagai pembagi, maka program akan menjadi tidak efisien.
Ambil contoh, misalnya bilangan yang hendak diperiksa adalah 17. Jika bilangan 17
tersebut diperiksa dengan cara dibagi dengan 3, 5, 7, 9, 11, 13, 15, maka ada 7 langkah
pemeriksaan. Padahal sudah jelas 17 tidak akan habis dibagi 9, 11, 13, 15. Angka 9 dikali 2 saja
sudah 18, bukan? Karena itu perlu diberi batas akan program tetap efisien. Batas dicari
dengan cara membagi bilangan yang diperiksa dengan variabel bagi. Selama nilai batas lebih
besar daripada nilai variabel bagi, perhitungan akan terus dilakukan. Itu sebabnya program
dibatasi dalam loop while (batas > bagi).
Sebagai variasi dari program tersebut akan dibuat program untuk mencari bilangan
prima dalam rentang 1 sampai dengan 1000. Contoh program tersebut diberikan pada listing
2.
Listing 2. Mencari bilangan prima dalam rentang 1-1000

#include <stdio.h>

main()
{
int i;
int prima;
int cekprima();

clrscr();
printf("======================\n");
printf("MENCARI BILANGAN PRIMA\n");
printf("DALAM RENTANG 1-1000\n");
printf("======================\n\n");
printf("Bilangan prima yang ditemukan : \n");
for (i=1;i<=1000;i++)
{
prima = cekprima(i);
if (prima == 1)
{
printf(" %d",i);
}
}
}

int cekprima(bil)
int bil;
{
int bagi=3;
int batas;
if (bil == 1)
{
return(0);
} else if (bil==2||bil==3) {
return(1);
} else if (bil % 2 == 0) {
return(0);
} else {
while (batas > bagi)
{
if (bil % bagi == 0)
{
return(0);
break;
}
batas = bil / bagi;
bagi += 2;
}
return(1);
}
}

Jika program tersebut dijalankan, maka hasilnya akan nampak seperti gambar 2.
Nah, sebagai latihan, Anda bisa memodifikasi program listing 1 dengan menambahkan
sebuah looping “Apakah Anda ingin mencoba lagi?”
Kemudian program listing 2 juga dapat dimodifikasi agar user dapat memasukkan
sendiri rentang pencarian (tentunya dengan batasan tertentu) dan kemudian pada output
dituliskan juga “Bilangan prima yang ditemukan ada n buah”.
Selamat mencoba.

You might also like