Sebelum kita memprogram, mari kita pelajari algoritmanya terlebih dahulu. Dalam pembuatan program ini, kerja kita akan dipermudah dengan adanya operasi matematika modulus (sisa pembagian). Untuk mengekspresikan operasi modulus dalam bahasa c kita akan menggunakan "%" tanpa tanda petik. Langsung saja lihat operasi modulus pada angka bilangan prima dan bukan prima berikut:
angka: 3 (prima)
3 mod 1 = 0
3 mod 2 = 1
3 mod 3 = 0
angka: 4 (bukan prima)
4 mod 1 = 0
4 mod 2 = 0
4 mod 3 = 1
4 mod 4 = 0
angka: 5 (prima)
5 mod 1 = 0
5 mod 2 = 1
5 mod 3 = 2
5 mod 4 = 1
5 mod 5 = 0
angka: 6 (bukan prima)
6 mod 1 = 0
6 mod 2 = 0
6 mod 3 = 0
6 mod 4 = 2
6 mod 5 = 1
6 mod 6 = 0
Nah, coba amati baik-baik operasi di atas. Sudahkah kamu melihat perbedaannya? Operasi di atas merupakan modulus dari suatu angka dengan angka real sebelumnya. Perbedaannya, angka prima menghasilkan angka 0 HANYA DUA KALI. Yap, dari sini kuharap kamu sudah mulai mendapat gambaran dalam pembuatan program kita nanti.
Ehm, penjelasan sederhananya seperti ini. Dalam program kita nanti kita akan memodulus suatu angka yang dicek dengan angka-angka real sebelum angka tersebut. Lalu di sini kita kondisikan, jika operasi tersebut mendapatkan nilai 0 sebanyak dua kali, maka angka tersebut bisa dipastikan prima. Dan jika mendapat nilai 0 sebanyak bukan dua (tidak bingung kan? Maksudnya bisa satu kali atau lebih dari dua kali), maka angka tersebut bukan prima.
Haha, that's easy, right? Let's write the source!
/*============= start here =============*/ #include<stdio.h> void main(void){ int bil,i,j,cek; scanf("%d",&bil); for(i=1;i<=bil;i++){ cek=0; for(j=1;j<=bil;j++){ if(i%j==0){ cek++; } } } if(cek==2){ printf("prima"); }else{ printf("bukan prima"); } } /*============== end here ==============*/Lihat kode diatas! Di situ aku menggunakan nested loop (perulangan bersarang) untuk mempermudah mengecek bilangan tersebut. Nested loop akan melakukan operasi modulus sebanyak yang kita butuhkan untuk pengecekan. if(i%j==0) dimaksudkan untuk melakukan operasi modulus dan melakukan pengkondisian apakah mendapatkan hasil 0 atau bukan. Jika iya, maka variabel cek akan ditambah 1. if(cek==2) digunakan untuk pengkondisian jika variabel cek berjumlah 2, maka program akan mencetak tulisan prima. Hmm, pekerjaan mengecek angka prima yang membutuhkan waktu begitu lama, kini bisa kita kerjakan hanya dengan waktu sekian detik saja. Nice! Inilah salah satu alasan mengapa aku menyukai dunia IT khususnya dalam programming. :)
3 comment(s):
hmmm... ini yang aku cari...
pengen belajar lebih di C :)
kita msh sama2 belajar. makasih komennya.. :)
boolean isPrima(int n) {
bool prima = true;
if ( n < 2) return false;
else if (n == 2 || n == 3) return true;
else if ( n % 2 == 0) return false;
else {
for (int i = 5; i*i <= n; i += 2) {
if (n%i == 0) prima = false;
}
return prima;
}
}
Post a Comment
feel free to write your comment here.. :)