Jumat, Maret 05, 2010

Algoritma dan program mengetahui urutan bilangan prima

Kalau pada postingan kemarin kita membahas algoritma bagaimana cara mengetahui bilangan prima ke-n, misalkan kita ingin tahu bilangan prima ke-39, dengan memasukkan angka 39, maka dalam waktu sekejap kita langsung tahu bahwa bilangan prima ke-39 adalah 167, baca postingan tersebut di sini! Kalau pada kesempatan kali ini kita akan membuat suatu algoritma yang merupakan kebalikan dari postingan kemarin, misalnya dengan memasukkan angka 167 maka kita akan tahu bahwa 167 itu adalah bilangan prima ke-39

Sekarang kita akan mulai, untuk awalnya tentu akan dimasukkan suatu bilangan yang akan kita periksa apakah bilangan itu termasuk bilangan prima atau bukan dengan tujuan akhir jika bilangan tersebut merupakan bilangan prima maka akan diketahui bahwa bilangan tersebut merupakan urutan ke sekian dalam himpunan bilangan prima.

Misalkan bilangan yang dimasukkan itu dengan m, dan bilangan m itu pasti akan memenuhi salah satu dari 3 kondisi berikut:
  1. m lebih kecil dari 2 (m < 2)
  2. m adalah 2 (m = 2)
  3. m lebih besar dari 2 (m > 2)
maka algoritma awalnya adalah sebagai berikut:
  • Untuk kodisi m < 2 tidak akan ada pembahasannya, karna tujuan kita adalah mencari urutan keberapa suatu bilangan prima dalam himpunan bilangan prima, sementara tidak ada bilangan prima yang lebih kecil dari 2, maka telah dilakukan kesalahan jika dimasukkan bilangan yang lebih kecil dari 2 untuk diketahui urutan prima ke berapa bilangan yang lebih kecil dari 2 itu, maka pada kondisi ini cukup ditampilkan tulisan “Maaf, bilangan yang dimasukkan salah” dan programpun berakhir.
  • Untuk kondisi m = 2 maka tidak akan ada pemeriksaan untuk bilangan 2 apakah bilangan 2 bilangan prima atau bukan, karna sudah jelas bilangan 2 adalah merupakan bilangan prima dan merupakan prima urutan ke-1 dalam himpunan bilangan prima, dan programpun berakhir.
  • Untuk kondisi m > 2 akan dilakukan pembahasan selanjutnya
. Maka algoritmanya menjadi seperti berikut: Untuk pemeriksaaan selanjutnya pada kondisi m 2, misalkan a adalah semua bilangan yang lebih besar dari 2 yang akan kita periksa, tentu a kita mulai dari 3, 4, 5 dan seterusnya, maka algoritmanya menjadi: Pada algoritma di atas baru nilai a = 3 yang bisa diperiksa, sehingga a := a+1 dibuat sebagai perintah yang sering digunakan agar nilai a selalu bertambah 1 setiap didapat hasil dari pemeriksaan apakah a bilangan prima atau bukan dan a merupakan bilangan prima ke sekian, TETAPI jika nilai a belum sama dengan nilai m maka akan kembali ke a := a+1 untuk memeriksa nilai a = 4, 5 dan seterusnya sampai a itu akan bernilai sama dengan m, sehingga algoritmanya menjadi: Jika a merupakan suatu bilangan prima, maka akan ada penambahan suatu nilai urutan setiap didapat sebuah bilangan prima, hingga saat a sudah sama dengan m, maka didapat bahwa a atau m adalah prima urutan ke-sekian, kita akan misalkan nilai urutan itu dengan c, dan c := c+1 tentu definisi awal nilai c adalah c = 1 supaya c bermula dari 2 (karna untuk urutan prima ke-1 sudah ditempati oleh bilangan 2) pada c := c+1 / c := 1+1 = 2, maka algoritmanya akan menjadi: Secara umum itulah bentuk suatu algoritma untuk mengetahui urutan ke berapa suatu bilangan prima dalam himpunan bilangan prima, selanjutnya kita akan melakukan pemeriksaan apakah suatu bilangan itu merupakan bilangan prima atau bukan, untuk memeriksa suatu bilangan apakah prima atau bukan, maka kita harus punya b := 2, 3, ..., a-1, untuk memeriksa hasil dari a mod b, apakah a mod b = 0 atau tidak, sehingga algoritmanya akan menjadi: Itulah suatu algoritma akhir untuk mengetahui urutan ke berapa suatu bilangan prima dalam himpunan bilangan prima, jika algoritma itu kita tuliskan ke dalam bahasa pemrograman turbo pascal maka akan didapat sintaks sebagai berikut:
uses crt; 
label d; 
var a,b,c,m:longint; 
begin clrscr; 
write('PROGRAM INI AKAN MEMINTA MASUKAN SEBUAH BILANGAN, JIKA BILANGAN'); write(' YANG DIMASUKKAN ITU ADALAH BILANGAN PRIMA MAKA PROGRAM AKAN MENYEBUTKAN'); writeln(' URUTAN KE BERAPA BILANGAN PRIMA TERSEBUT DALAM BARISAN BILANGAN PRIMA'); writeln(#10);
write('input nilai m! '); 
readln(m); if m<2 then 
writeln('Maaf, bilangan yang dimasukkan tidak sesuai dengan permintaan Program') else if m=2 then writeln('2 adalah bilangan prima ke-1') else begin
a:=2; c:=1; 
d: a:=a+1; 
for b:=2 to a-1 do 
begin if a mod b = 0 then 
begin b:=a-1; if a=m then writeln(a,' bukan bilangan prima') else goto d; 
end else begin if b=a-1 then begin c:=c+1; if a=m then writeln(a,' adalah bilangan prima ke-',c) else goto d; end; end; end; end;  readln end.

Setelah sintaks di atas dijalankan di dalam bahasa pemrograman turbo pascal maka akan tercipta suatu aplikasi yang dapat didownload di sini, untuk file .pas (yang akan diketikkan di bahasa pemrograman turbo Pascal) dapat mendownloadnya di sini, sedangkan untuk file ms-word nya silakan ambil di sini. ingin dapat update tentang program pascal lainnya? silakan Join group facebook sahabat-informasi.com dan Like Fanpage sahabat informasi dengan dengan account facebook kamu, Burung Irian Cendrawasih Cukup sekian Terima kasih lihat juga algoritma dan program pascal lainnya di sini

7 komentar:

PERTAMAX!!!

Good post dan memberikan pencerahan...

Wah Ilmu nih.. Tx sob!

waaah nggak ngerti pascal

nice share brooooo

aku ngga ngerti, hhihihihiihiih

gk ngerti tapi menarik juga
dech
hehe
jangan lupa berkunjung ke congcot yaaa