Contoh 6. Mencari Bilangan Prima Dengan Bahasa C

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 satusatunya 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 {

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

} else if (bil==2||bil==3) { return(1). if (bil == 1) { return(0). } batas = bil / bagi. printf("DALAM RENTANG 1-1000\n").{ int i. int batas. for (i=1. printf("Bilangan prima yang ditemukan : \n"). bagi += 2. Anda bisa memodifikasi program listing 1 dengan menambahkan sebuah looping “Apakah Anda ingin mencoba lagi?” .i<=1000.i). { int bagi=3. clrscr().i++) { prima = cekprima(i). maka hasilnya akan nampak seperti gambar 2. printf("MENCARI BILANGAN PRIMA\n"). Nah. if (prima == 1) { printf(" %d". } return(1). } } Jika program tersebut dijalankan. printf("======================\n"). sebagai latihan. } } } int cekprima(bil) int bil. int prima. } else if (bil % 2 == 0) { return(0). printf("======================\n\n"). break. } else { while (batas > bagi) { if (bil % bagi == 0) { return(0). int cekprima().

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.

Sign up to vote on this title
UsefulNot useful