8 Sep 2014

Cara Mudah Mendeteksi Bilangan Prima dengan JavaScript

Masih ingat dengan bilangan prima? Bilangan prima adalah bilangan yang hanya bisa dibagi oleh 1 dan bilangan itu sendiri. Konsep ini telah diajarkan sejak kelas 5 SD di zaman saya. Mungkin di zaman kamu diajarkan bukan di kelas 5 SD.

Bilangan prima ini adalah bilangan yang sangat menarik. Sebagian besar bilangan prima adalah bilangan ganjil. Namun, bilangan prima juga ada yang genap, yaitu angka 2.

Berbicara mengenai masalah bilangan prima, kamu akan mulai menebak bilangan berapa saja yang masuk ke dalam bilangan prima. Dulu, dengan berbekal perangkat kalkulator, saya biasanya mengecek bilangan prima dengan membaginya dengan angka-angka pembagi semisal 2, 3, 5, 7 dan seterusnya. Nah kali ini, saya akan berbagi mengenai aplikasi web buatan saya yang bisa mendeteksi bilangan prima.

Mendeteksi Bilangan Prima dengan Mudah

Bagi kamu yang tertarik dalam bidang web, tentu sangat akrab dengan JavaScript. Dengan bermodal sedikit pengetahuan tentang JavaScript dan algoritma komputer yang saya pelajari di kuliah, saya membuat aplikasi pendeteksi bilangan prima dengan JavaScript. Berikut ini adalah aplikasinya.


Kamu bisa mencobanya dengan memasukkan angka sembarang. Nantinya akan dideteksi apakah angka tersebut termasuk bilangan prima atau bukan. Jika kamu penasaran dengan algoritma yang saya gunakan, kamu bisa melakukan inspect elements untuk melihat source code-nya.

Aplikasi di atas mempunyai algoritma yang biasa dan belum dioptimasi. Jika kamu memasukkan 10 digit bilangan prima, maka bisa jadi browser kamu akan hang. Hal ini disebabkan karena komputasi perulangan yang begitu banyak (10 digit). Coba bayangkan jika manusia disuruh menghitung sebanyak itu. Tentu saja manusia akan pusing.

Optimasi Algoritma Detektor Bilangan Prima

Untuk menambah performa aplikasi, saya merombak sedikit algoritma pada aplikasi sebelumnya. Saya menamakannya versi 2. Algoritma yang saya rombak adalah pengurangan komputasi perulangan yang terjadi. Kamu bisa mencobanya dan membedakan kecepatan pendeteksiannya. Berikut ini adalah versi keduanya.


Pada versi kedua ini saya memangkas beberapa perulangan yang menurut saya tidak penting. Karena bilangan prima ini hanya bisa dibagi dengan 1 dan bilangan itu sendiri, maka ketika bilangan tersebut sudah bisa dibagi dengan 2 maka perulangan pembagian selanjutnya dibatalkan. Pembatasan pembagian ini sangat memangkas komputasi.

Selain itu, saya juga memangkas di sisi yang lain. Jika bilangan tersebut tidak berhasil habis dibagi dengan bilangan perulangan, maka jumlah perulangan akan dibagi dengan bilangan perulangan. Hal ini sangat memangkas komputasi perulangan yang terjadi. Jika kamu bingung dengan kalimat penjelasanku, kamu bisa melakukan inspect elements untuk membaca algoritmanya.

Tingkat Ketilitian Detektor Bilangan Prima

Setiap aplikasi tentu memiliki tingkat ketelitian. Begitu juga dengan aplikasi web buatan saya ini. Detektor bilangan prima yang saya buat ini memiliki tingkat ketelitian hingga 15 digit. Ini berdasarkan percobaan yang saya lakukan. Jika lebih dari 15 digit angka yang kamu masukkan, akan menghasilkan galat. Bilangan yang seharusnya termasuk bilangan prima, dideteksi bukan prima.

Saya juga tidak tahu penyebab dari keterbatasan ketelitian ini. Mungkin juga tergantung dari tingkat ketelitian perhitungan fungsi Number() milik JavaScript. Mungkin jika kamu menggunakan Matlab, tingkat ketelitiannya akan lebih dari 15 digit.

2 komentar:

  1. intinya bilangan prima itu ga bisa dibagi secara normal .. itu pikiranku paling sederhana

    BalasHapus
    Balasan
    1. ga bisa dibagi secara normal gimana yo? *bingung*

      Hapus

Populer Terbaru Komentar

Entri Terbaru

Komentar Terbaru

Creative Commons License
All contents by Iskael is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
Based on a work at Iskael.
Permissions beyond the scope of this license may be available at Iskael.
© 2013 Belajar Ngeblog bersama Iskael. All Right Reserved. Powered by Blogger. Iskael Template by Iskael. Submitted on TopBlogIndonesia