Menghitung Digit Bilangan dengan Fungsi Logaritma

October 24, 2017, 5:23 pm

Beberapa waktu yang lalu, Saya jumpai kasus tentang bagaimana menghitung banyaknya digit pada bilangan faktorial. Sebenarnya masalah ini bisa diselesaikan dengan menghitung banyaknya digit hasil dari bilangan faktorialnya. Namun, masalah ini menjadi kompleks ketika menghitung bilangan yang besar. Akankah mudah menghitung hasil perkalian faktorial tersebut secara cepat? Padahal masalah yang sebenarnya hanyalah menghitung banyaknya digit, bukan nilainya.

Pendekatan secara naif memang mudah dicerna namun tidak cukup mangkus untuk memecahkan permasalahan yang kompleks. Sehingga memerlukan pendekatan lain seperti pendekatan secara matematis atau algoritma tertentu. Dalam hal ini, pendekatan dengan matematis yang akan dibahas.

Apa itu fungsi Logaritma?

Kita tahu bahwa pangkat dari suatu bilangan dapat dicari dengan menghitung nilai logaritmanya. Seperti log10 dari 10 adalah 1.

 

Logaritma adalah operasi matematika yang merupakan kebalikan (atau invers) dari eksponen atau pemangkatan. Rumus dasar logaritma: {\displaystyle a^{b}=c\ \Longleftrightarrow \ ^{a}\log {c}=b} Pada rumus ini, a adalah basis atau pokok dari logaritma tersebut. [1]

Hal yang terpenting dari fungsi logaritma adalah nilai basisnya. Jika basis yang digunakan adalah 2 maka hasil fungsi logaritma tersebut merupakan kebalikan dari pemangkatan 2. Misalnya log2 dari 64 adalah 6 dimana 2^6 adalah 64.

Hubungan Fungsi Logaritma dengan Jumlah Digit Bilangan?

Jumlah digit bilangan berhubungan dengan banyaknya pangkat dari bilangan tersebut. Dalam hal ini pangkat yang dimaksud adalah perpangkatan 10, mengingat bilangan yang digunakan berbasis 10 atau menggunakan sistem bilangan desimal.

Misalkan: 1 merupakan 100 10 merupakan 101 100 merupakan 102 1000 merupakan 103

Dari contoh tersebut, bertambahnya jumlah digit berbanding lurus dengan bertambahnya jumlah pangkat. Seperti bilangan 1 yang merupakan 10 pangkat 0, dimana pangkatnya ditambah 1 menghasilkan jumlah digitnya. Sehingga dapat disimpulkan bahwa:

1 = 100 , jumlah digit bilangan 1 = 0 + 1 = 1 10 = 101, jumlah digit bilangan 10 = 1 + 1 = 2 100 = 102, jumlah digit bilangan 100 = 2 + 1 = 3 1000 = 103, jumlah digit bilangan 1000 = 3 + 1 = 4

Untuk menyederhanakan perhitungan tersebut, fungsi logaritma dapat digunakan untuk mengambil nilai pangkatnya. Sehingga perhitungan menjadi:

jumlah digit bilangan 1 = log10(1) + 1 = 0 + 1 = 1 jumlah digit bilangan 10 = log10(10) + 1 = 1 + 1 = 2 jumlah digit bilangan 10 = log10(100) + 1 = 2 + 1 = 3 jumlah digit bilangan 10 = log10(1000) + 1 = 3 + 1 = 4

Bagaimana dengan bilangan selain 1, 10, 100, dan 1000?

Sebagai contoh, bilangan yang akan dihitung jumlah digitnya adalah 5, 12, 29, 102, 599, dan 1023. Perhitungannya menjadi seperti berikut:

digit 5 = log10(5) + 1 = 1.69897 digit 12 = log10(12) + 1 = 2.07918 digit 29 = log10(29) + 1 = 2.4624 digit 102 = log10(102) + 1 = 3.0086 digit 599 = log10(599) + 1 = 3.77743 digit 1023 = log10(1023) + 1 = 4.00988

Hasil yang didapatkan cukup jelas bahwa jumlah digit bilangan tersebut diambil dari nilai integer / nilai yang bulat. Sebagai contoh digit 5 menghasilkan 1.69897, jumlah digitnya adalah 1. Untuk itu, perlu adanya fungsi untuk melakukan pengambilan nilai bulat dari hasil perhitungan tersebut. Fungsi ini dikenal dengan fungsi floor. Sehingga rumus perhitungan menjadi:

digit( n ) = floor ( log10 ( n ) ) + 1

Dengan demikian untuk menghitung banyaknya digit dari suatu bilangan dapat menggunakan rumus floor( log10( n ) ) + 1 atau jika dalam pemrograman dapat menggunakan casting tipe data menjadi integer sehingga otomatis floating point akan dihilangkan.

Pengembangan Perhitungan Digit Secara Logaritma

Perhitungan digit ini juga berlaku jika dan hanya jika bilangan yang dihitung berada dalam lingkup sifat-sifat eksponensial. Contohnya:

Bentuk Eksponensial Bentuk Logaritma
{\displaystyle \!\,ab} {\displaystyle \!\,\log(ab)=\log(a)+\log(b)}
{\displaystyle \!{\frac {a}{b}}} {\displaystyle \!\,\log({\frac {a}{b}})=\log(a)-\log(b)}
{\displaystyle \!\,a^{b}} {\displaystyle \!\,\log(a^{b})=b\log(a)}
{\displaystyle \!\,{\sqrt[{b}]{a}}} {\displaystyle \!\,\log({\sqrt[{b}]{a}})={\frac {\log(a)}{b}}}

Misalkan untuk menghitung digit dari suatu bilangan kuadrat dapat secara langsung menghitung nilai logaritma dari bilangan tanpa harus menghitung perkaliannya. Dengan berdasarkan bentuk eksponensial dari bilangan kuadrat yaitu n^2 atau n.n maka penyelesaian perhitungan digit bilangan tersebut dapat menggunakan 2 cara:

  1. Menggunakan log10(n.n) = log10(n) + log10(n)
  2. Menggunakan log10(n2) = 2.log10(n)

Contoh implementasinya sebagai berikut. Hitunglah masing-masing jumlah digit bilangan kuadrat dari 5, 12, 524, 1024, 92843, dan 739340.

Bilangan Kuadrat 2.Log10(n)+1 Digit
5 25 2.39794 2
12 144 3.15836 3
524 274576 6.43866 6
1024 1048576 7.0206 7
92843 8619822649 10.9355 10
739340 546623635600 12.7377 12

Dari hasil tersebut menunjukkan bahwa rumus tersebut dapat dengan mudahnya mengidentifikasi banyaknya digit bilangan kuadrat. Jika dibandingkan dengan menghitung secara eksplisit / secara langsung nilai kuadrat dari bilangan tersebut, maka lebih efektif dan efisien menggunakan fungsi logaritma. Karena perhitungan dengan big number membutuhkan tipe data yang besar dan waktu yang cenderung lama, maka perhitungan digit dengan menggunakan fungsi logaritma dapat memangkas kendala memory dan waktu.

Daftar Pustaka

[1] Wikipedia. "Logaritma". <https://id.wikipedia.org/wiki/Logaritma> (diakses pada tanggal 29 Mei 2017)