Jumat, 07 Maret 2014

JavaScript untuk Menampilkan Bilangan Prima

JavaScript untuk Menampilkan Bilangan Prima - Ketika ada soal Pemrograman Web untuk menampilkan bilangan prima, gw pikir gampang aja. Bilangan prima itu kan bilangan yang hanya dapat dibagi dengan 1 dan habis dibagi dengan bilangan itu sendiri. Artinya, bilangan prima tidak bisa habis dibagi bilangan lain selain dirinya sendiri. Habis dibagi artinya setelah dibagi sisanya 0 (nol). Dengan definisi di atas, contoh bilangan prima adalah: 2, 3, 5, 7, 11, 13, dst.

"Oke", saya bilang waktu itu dalam hati, "gampanglah, cuman gitu doang." Saya berpikir paling di web juga ada banyak. Dan ternyata memang di web banyaaaaaakkkkk...., banyak yang tidak berjalan seperti yang seharusnya, atau mungkin karena terlalu canggih jadi saya tidak mengerti. Ada juga program yang benar, dapat menampilkan bilangan prima setelah kita input angka maksimalnya tetapi saya mencari yang dapat menampilkan bilangan prima saja tanpa kita input terlebih dahulu.

Ada 1 program yang dibuat oleh seseorang mendekati pola berpikir saya. Saya pikir, kita harus membuat 1 variabel lagi selain variabel angka yang dicari dan angka pembagi. Jadi ada 3 variabel. Variabel pertama, angka yang dicari tadi (angka yang mau kita tentukan prima atau bukan). Variabel kedua, angka pembagi. Variabel ketiga adalah jumlah hasil pembagian yang nilai sisa hasil baginya 0 (nol). Kita namakan variabel ketiga ini sebagai "S". Logikanya, jika S lebih dari atau sama dengan 2, maka bilangan itu bukan bilangan prima, iya dong, kan sisa pembagiannya yang bernilai 0 lebih dari 1 berarti bisa habis dibagi lebih dari 1 angka. Contoh: angka 12, dapat habis dibagi oleh 2 (12 : 2 = 6, sisa 0), 3 (12 : 3 = 4 sisa 0), 4 (12 : 4 = 3 sisa 0), 6, dan angka 12 itu sendiri berarti S angka 12 ada 4, menunjukan bahwa 12 bukan bilangan prima. Ternyata program berkata lain. Hasilnya tidak sesuai yang saya inginkan dan saya belum mengerti kesalahan ada di mana. Oleh sebab itu saya tidak akan memberikan program yang salah tersebut (ya iyalah buat apa juga!!).

Setelah banyak membaca dan berdoa, saya menemukan bahwa untuk mengecek suatu bilangan prima atau bukan, kita cukup membaginya dengan bilangan maksimal sampai dengan angka yang merupakan akar kuadrat dari bilangan yang mau kita cek. Mengapa? Saya mengerti alasan yang tepat setelah membaca dari sini : http://stackoverflow.com/questions/5811151/why-do-we-check-upto-the-square-root-of-a-prime-number-to-determine-if-it-is-pri

Kurang lebih seperti ini intinya:

Katakanlah m=akar kuadrat dari n kemudian m×m=n. Sekarang, jika n bukan bilangan prima maka n dapat ditulis n= a×b, berarti m×m = a×b. 
Perhatikan bahwa m adalah bilangan riil sedangkan n, a, dan b adalah bilangan asli (bodo amat dah tuh gw juga dah lupa tuh bilangan asli yg mana bilangan riil yang mana).

Sekarang ada 3 kemungkinan:

a > m ⇒ b < m
a = m ⇒ b = m
a < m ⇒ b > m

Dari 3 kemungkinan, min(a,b) ≤ m. Oleh karena itu jika kita mencari sampai m, kita pasti menemukan setidaknya satu faktor dari n, cukup untuk menunjukan bahwa n bukan bilangan prima.

Translate alias copas-an na:
Lets say m = sqrt(n) then m×m = n. Now if n is not a prime then n can be written as n = a×b, so m×m = a×b. Notice that m is a real number whereas n, a and b are natural numbers.

Now there can be 3 cases:

a > m ⇒ b < m
a = m ⇒ b = m
a < m ⇒ b > m
In all 3 cases, min(a,b) ≤ m. Hence if we search till m, we are bound to find at least one factor of n, which is enough to show that n is not prime.


Karena itulah ternyata kita tidak butuh variabel ke-3 untuk mengecek suatu bilangan prima atau bukan. Okelah ini dia JavaScript (embedded ke HTML) untuk menampilkan bilangan prima yang termudah menurut saya. Bukan saya yang menciptakan, bukan saya yang menemukan, saya hanya menaruh program yang sudah ada pada tempat yang sesuai agar tercapai hasil yang saya inginkan:

Lebih jelasnya:

<html>
<head>
<title>Bilangan Prima</title>
</head>
<body>
<SCRIPT LANGUAGE = "JavaScript">
<!--
function cekPrima( n ) {
    var max = Math.sqrt(n);
    for( var i = 2;  i <= max;  i++ ) {
        if( n % i == 0 )
            return false;
    }
    return true;
}

for( var n = 2;  n < 20;  n++ ) {
        if( cekPrima(n) ) {
document.write( n + '<BR>' );
}
}

// -->
</SCRIPT>
</body>
</html>


Hasilnya:
2
3
5
7
11
13
17
19

Karena memang saya ditugaskan membuat hasil yang bersusun ke bawah maka hasilnya seperti itu.

Jika ingin hasilnya mendatar, hapus saja <BR> yang ada di program di atas sehingga menjadi:
document.write( n + ' ' );
Berikan ' ' untuk spasi (spasi di antara 2 tanda petik).

Kemudian jika ingin menambah maksimal angka yang ingin kita cek itu prima atau bukan, ubah saja angka 20 di n<20 menjadi angka yang anda inginkan.

Silakan bertanya dan komentar di kolom komentar di bawah.

Semoga bermanfaat!

7 komentar:

  1. makasih banget gan
    T_T
    pas banget sama yang ane butuhin
    masih bingung dan kurang ngerti sih
    tapi ngebantu banget

    BalasHapus
    Balasan
    1. Makasih. Bingung di mana? Mungkin saya bisa bantu.

      Hapus
  2. kalau hanya mau tampilkan bilangan yang habis dibagi 3 misalkan, bgimana ya gan? mohon bantuannya

    BalasHapus
    Balasan
    1. Tetap pakai mod atau tandanya berupa % (persen).

      Hapus
  3. gabisa di coba, kalo ga pake return tru/falsenya di hilangkan gimana

    BalasHapus
    Balasan
    1. Programnya sudah agak lama, saya cari-cari sudah tidak ada backup-nya tapi saya coba lagi bisa kok. Tidak bisa di mananya ya? Return true dan return false digunakan untuk kelanjutan programnya, kalau dihilangkan silakan coba sendiri, apakah bisa berfungsi atau tidak.

      Hapus
    2. Ini Javascript yang disisipkan dalam HTML, bukan Java.

      Hapus