P. 1
Contoh 6. Mencari Bilangan Prima Dengan Bahasa C

Contoh 6. Mencari Bilangan Prima Dengan Bahasa C

|Views: 835|Likes:
Published by Bonifasius Sinaga

More info:

Published by: Bonifasius Sinaga on Nov 02, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

11/07/2012

pdf

text

original

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 {

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

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

.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're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->