Anda di halaman 1dari 8

Algoritma bilangan prima

By agus gin'anjar ¶ Posted in Technology ¶ Tinggalkan komentar


(by http://galih.eu)
Bilangan prima termasuk bilangan yang cukup unik, kita sudah mempelajari bilangan ini
sejak masuk sekolah dasar.

Beberapa referensi yang penulis dapat menyatakan bahwa bilangan prima merupakan
bilangan positif yang hanya bisa dibagi oleh tepat 2 pembagi, yaitu angka 1 dan angka
tersebut sendiri. Ada juga yang menyatakan sebagai suatu bilangan yang hanya bisa dibagi
oleh dirinya sendiri tanpa menyertakan angka 1.

Contoh: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89,
97 dan seterusnya.

Teori selanjutnya silakan


baca http://en.wikipedia.org/wiki/Prime_number dan http://mathworld.wolfram.com/PrimeN
umber.html.
Dalam logika pemrograman, kita cuma perlu memperhatikan mulai angka 2 dan seterusnya.
Angka 0 jelas tidak mungkin, karena bilangan ini dibagi angka berapapun akan menghasilkan
angka 0. Dan angka 1 juga kita abaikan saja, sebab angka 1 hanya bisa dibagi oleh dirinya
sendiri, padahal bilangan prima itu syarat utamanya bisa dibagi oleh 2 bilangan natural yang
nyata, yaitu angka 1 dan dirinya sendiri. (Note: bisa dibagi ini dalam artian menghasilkan
bilangan bulat positif, bukan bilangan pecahan.)
Berikutnya akan penulis ilustrasikan contoh pembagiannya, dimana kita sepakati bahwa
angka pembagi tidak melibatkan angka 1.

2: hanya bisa dibagi 2.


3: hanya bisa dibagi 3.
4: bisa dibagi 2 dan 4 (lebih dari 1 pembagian, maka tidak termasuk bilangan prima).
5: hanya bisa dibagi 5.
6: bisa dibagi 2,3, dan 6 (bukan bilangan prima).
Dan seterusnya.

Misalkan diketahui sebuah bilangan X, bagaimana cara menentukan bahwa bilangan X itu


termasuk bilangan prima atau bukan?
Asumsi: X adalah bilangan yang lebih besar dari 2

Berarti bilangan-bilangan yang akan menjadi pembagi adalah mulai angka 2 sampai X-1.


Jika bilangan X bisa dibagi oleh minimal salah satu dari bilangan-bilangan mulai 2 sampai X-
1, maka dapat dikatakan bahwa bilangan X adalah bukan bilangan prima.

Contoh: 9
Bilangan sebagai pembagi adalah 2 3 4 5 6 7 8
Untuk mengetahui bahwa suatu bilangan bisa dibagi atau tidak, paling mudah kita
menggunakan bantuan mod, yang menyatakan sisa hasil bagi. Jika sisa hasil bagi 0 berarti
bisa dibagi.
Kembali ke contoh.

9 mod 2 = 1 (hasil bukan 0, artinya tidak habis/bisa dibagi), lanjutkan,

9 mod 3 =0 (sudah cukup untuk menyimpulkan bahwa 9 adalah bukan bilangan prima.)

Tidak perlu kita uji dengan membagi 9 dengan angka 4 dan seterusnya.

Contoh lain: 11
11 mod 2 = 1

11 mod 3 = 2

11 mod 4 = 3

11 mod 5 = 1

11 mod 6 = 5

11 mod 7 = 4

11 mod 8 = 3

11 mod 9 = 2

11 mod 10 = 1

Tidak ada yang menghasilkan angka 0, berarti 11 termasuk bilangan prima.

Sekarang kita coba dengan algoritma pemrogramannya.

KAMUS
i : integer
bil : integer
prima : boolean
ALGORITMA
prima ← false
input (bil)
if (bil=2) then
prima ← true
else
for i ← 2 to bil-1 do
if (bil mod i = 0) then
prima ← false
exit for // keluar dari looping
else
prima ← true
endif
endfor
endif

if (prima) then // prima=true


output ("Bilangan Prima")
else
output ("Bukan Bilangan Prima")
endif
Logika di atas bisa digunakan kalau kita ingin memeriksa hanya pada satu bilangan tertentu
saja.

Bagaimana kalau soal kita kembangkan, menampilkan bilangan prima dari bilangan sekian
sampai sekian. Maka tinggal kita kombinasikan dengan looping juga.
Source Code C++.
?
1 #include <iostream>
2 /* ------------------------------
3 Developed by Galih Hermawan
4 Website: http://galih.eu
5 ------------------------------ */
6 using namespace std;
7 int main()
8 {
9 int i, j, min, max, jum=0, total=0;
1 float rata;
0 bool prima;
1 cout << "Masukkan nilai batas bawah: ";
cin >> min;
1
cout << "Masukkan nilai batas atas: ";
1 cin >> max;
2
while (min > max)
1 {
3 cout << "\n\nBatas atas harus lebih besar dari batas bawah.\nMasukkan
1 nilai batas atas: ";
4 cin >> max;
1 }
5 cout << endl;
1 for (i=min;i<=max;i++)
6 {
1 prima=false;
7 if (i==2)
1 prima=true;
8 else
1 {
9 for (j=2;j<i;j++)
2 {
0 if (i % j==0)
{
2
prima=false;
1
break; // keluar dari looping
2 }
2 else
2 prima=true;
3 }
2 }
4 if (prima) // prima = true
2 {
5 cout << i << "\t";
2 jum+=1; // menghitung banyaknya bilangan prima
6 total+=i; // total jumlah dari seluruh bil. prima
2 }
7 }
2 cout << endl;
8 cout.setf(ios::fixed);
cout.setf(ios::showpoint);
2
cout.precision(2);
9 rata=(float)total/jum;
3
cout << "\nTerdapat " << jum << " bilangan dengan total " << total;
0
cout << "\nRata-ratanya " << rata << endl;
3
system ("PAUSE");
1
return 0;
3 }
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
6
0
6
1
6
2
6
3
6
4
Contoh tampilan:
Source Code Java.
?
1 import java.util.Scanner;
2 /* ------------------------------
3 Developed by Galih Hermawan
4 Website: http://galih.eu
5 ------------------------------ */
6 public class DeretPrima
7 {
8 public static void main( String[] args )
9 {
1 Scanner input = new Scanner( System.in );
0 int i, j, min, max, jum=0, total=0;
1 float rata;
1 boolean prima;
1 System.out.print("Masukkan nilai batas bawah: ");
min = input.nextInt();
2
System.out.print("Masukkan nilai batas atas: ");
1
max = input.nextInt();
3
while (min > max)
1 {
4 System.out.print("\n\nBatas atas harus lebih besar dari batas
1 bawah.\nMasukkan nilai batas atas: ");
5 max = input.nextInt();
1 }
6 System.out.print("\n");
1 for (i=min;i<=max;i++)
7 {
1 prima=false;
8 if (i==2)
1 prima=true;
9 else
2 {
0 for (j=2;j<i;j++)
2 {
1 if (i % j==0)
2 {
2 prima=false;
break; // keluar dari looping
2
3 }
2 else
4 prima=true;
2 }
5 }
2 if (prima) // prima = true
6 {
System.out.printf("%d\t",i);
2
jum+=1; // menghitung banyaknya bilangan prima
7 total+=i; // total jumlah dari seluruh bil. prima
2 }
8 }
2 rata=(float)total/jum;
9 System.out.printf("\n\nTerdapat %d bilangan dengan total %d.",jum,total);
3 System.out.printf("\nRata-ratanya %5.2f",rata);
0 }
3 }
1
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
6
0
Contoh tampilan:

Versi Visual Basic 6 bisa Anda lihat di http://if.web.id/visual-basic-vb/deret-bilangan-prima/


Mudah-mudahan Allah ta’ala jadikan tutorial ini sebagai ‘ilmu yang bermanfaat. Amiin.

Anda mungkin juga menyukai