Tutorial Faktorisasi Angka Berapapun Menggunakan Coding PHP
Faktorisasi merupakan menulis suatu bilangan dalam bentuk hasil kali dari bilangan-bilangan yang lebih kecil yang disebut dengan faktor. Contohnya:
- 6 = 2 x 3
- 10 = 2 x 5
- 20 = 2 x 2 x 5
Biasanya kita bagi dulu angka tersebut dengan bilangan yang terkecil mulai dari 2, 3, 5, 13 dan seterusnya yang bisa membagi bilangan tersebut selain angka 1.
Salah satu format standar faktorisasi adalah faktorisasi prima, yaitu dengan memecahkan bilangan bulat menjadi hasil kali bilangan prima saja.
Kenapa bilangan prima?
Karena bilangan prima tak bisa lagi dipecah menjadi hasil kali bilangan yang lebih kecil dan cuma ada satu kemungkinan faktorisasi prima dari satu bilangan.
Implementasi dalam Codingan
Untuk tutorial kali ini, saya masih menggunakan bahasa pemrograman PHP. Untuk menjalankan scriptnya saya menggunakan terminal bawaan Linux.
Pertama-tama kita buat function untuk menghitung proses faktorisasi, kita namakan faktorisasi
misalnya. Codingannya kira-kira seperti ini:
<?php
function faktorisasi($angka)
{
$faktor = [];
while ($angka != 1) {
for ($i = 2; $i <= $angka; $i++) {
if ($angka % $i == 0) {
array_push($faktor, $i);
$angka = $angka / $i;
break;
}
}
}
return $faktor;
}
Penjelasan dari coding di atas:
Kita buat function bernama faktorisasi dengan parameter $angka
sebagai inputan/angka yang akan dimasukkan untuk diproses berapa faktor yang akan dihasilkan.
$faktor
berfungsi untuk menyimpan hasil faktorisasi kita nanti dalam bentuk array(). Kenapa array? karena dengan array kita bisa menyimpan banyak data dalam satu variabel dan lebih terstruktur.
Kemudian mulai dari perulangan while
dengan kondisi angka tidak sama dengan 1, karena kita ingin hasil bagi dari angka nanti selain 1.
Masuk perulangan berikutnya, kita menggunakan for karena menurut saya lebih cocok untuk mencari bilangan yang berurutan dari yang terkecil sampai ke terbesar. Kita mulai dari variabel $i
dengan 2, dan batas tertingginya dari angka itu sendiri ($i <= $angka
). Dan di setiap iterasi loop kita tambahkan increment (++) jadi $i++
.
Kemudian kita cek bilangan ini apakah habis dibagi dengan angka, kita bisa menggunakan operator modulus %
jadinya if ($angka % $i == 0)
. Ini artinya apakah bilangan $angka
habis dibagi dengan bilangan $i
sama dengan bilangan bulat atau hasilnya 0. Jika syarat ini terpenuhi, artinya $i
masuk ke dalam faktor kita.
Fungsi array_push
dalam PHP artinya untuk menambahkan elemen atau data ke dalam suatu variabel array. Karena di sini kita menggunakan $faktor
sebagai variabel untuk menyimpan data arraynya, jadi kita tambah bilangan $i
ke dalam array $faktor
.
Asumsikan angka yang ingin kita masukkan adalah 30, maka faktor yang akan dihasilkan nanti harusnya menjadi 2 x 3 x 5. Kita ingin membagi angka 30 dengan 2 dan hasilnya 15, maka $angka = $angka / $i
karena kita ingin iterasi selanjutnya dalam perulangan, menghitung angka yang sudah dibagi faktor ini.
Jadi, kalau angkanya 30 dan $i
nya ketemu 2, maka kita ingin melanjutkan dengan 15. Selanjutnya kita tulis break. Kenapa break? karena kita ingin keluar dari for-loop dan tujuan dari for-loop ini adalah hanya mencari faktor terkecil, bukan dari semua faktor.
Jadi, ketika dia sudah menemukan suatu faktor kita gak ingin dia akan terus menemukan faktor lainnya, dan keluar dari for-loop dan melanjutkan dengan perulangan while dengan angka yang sudah dibagi sebelumnya.
Jika semua kondisi perulangan telah terpenuhi, kita tinggal menulis return atau pengembalian hasil output kita nanti, dalam hal ini adalah variabel $faktor
.
Testing Hasil Codingan
Untuk melihat hasil dari kode yang telah kita tulis tadi, kita tinggal panggil function faktorisasi dengan parameter angka. Caranya bisa seperti berikut:
echo var_dump(faktorisasi(30));
Kenapa menggunakan var_dump
? karena dalam PHP untuk mencetak hasil dari suatu array, kita tidak bisa langsung mencetaknya dengan echo
atau print
biasa. Jadi, fungsi seperti var_dump
atau print_r
dibutuhkan dalam kasus ini karena berguna untuk menampilkan struktur informasi dari variabel data beserta tipe dan valuenya.
Maksudnya untuk mencetak hasil dari suatu array di PHP, kita harus mengkonversikan array tersebut menjadi sebuah tipe data string, dipenjelasan berikutnya akan saya jelaskan bagaimana nanti kita tampilkan hasil faktorisasi ini menjadi bentuk format yang lebih cantik.
Untuk menjalankan script PHP ini di terminal, kita bisa menggunakan perintah berikut:
php nama_file.php
Jika benar dan tak ada kesalahan program, maka harusnya hasilnya menjadi:
Lihat, ada 3 array di sana yaitu: mulai dari index ke 0 - 2.
Isi dari index [0] => 2, index [1] => 3, dan index [2] => 5, seperti yang kita harapkan hanya saja ini hasilnya dalam bentuk array.
Membuat Format Lebih Cantik
Misalnya kita ingin hasil dari faktorisasi kita nanti menjadi 30 = 2 x 3 x 5. Kita juga bisa membuat format seperti ini di PHP, tinggal kita gunakan fungsi implode
dari PHP untuk menggabungkan hasil data dalam bentuk array menjadi tipe data string.
Sehingga codingannya menjadi seperti ini:
function format_faktorisasi($angka)
{
$faktor = faktorisasi($angka);
return $angka . ' = ' . implode(' x ', $faktor) . "\n";
}
Coba perhatikan, kita bisa menggunakan fungsi faktorisasi ke dalam fungsi format_faktorisasi karena dalam pemrograman sebuah fungsi bisa memakai fungsi yang lain.
Tinggal kita panggil fungsi format_faktorisasi ini untuk melihat hasilnya.
echo format_faktorisasi(30);
Jika tidak ada error, maka hasilnya adalah:
Silahkan coba dengan angka yang lain, harusnya hasilnya sesuai dan benar.
Bahkan program ini juga bisa memproses hingga triliunan angka, tak percaya? ini hasilnya:
Dengan komputer yang modern seperti sekarang ini, proses faktorisasi hanya dalam hitungan detik padahal CPU yang saya gunakan sekarang hanya 2 core saja 😅
Hanya saja jika kita menambahkan angkanya lagi, maka proses akan menjadi lebih lama karena komputer mencoba semua kombinasi yang ada untuk mendapatkan hasil yang sesuai (lebih dikenal dengan sebutan brute force).
Full source code dari faktorisasi ini:
<?php
function faktorisasi($angka)
{
$faktor = [];
while ($angka != 1) {
for ($i = 2; $i <= $angka; $i++) {
if ($angka % $i == 0) {
array_push($faktor, $i);
$angka = $angka / $i;
break;
}
}
}
return $faktor;
}
function format_faktorisasi($angka)
{
$faktor = faktorisasi($angka);
return $angka . ' = ' . implode(' x ', $faktor) . "\n";
}
// Untuk testing hasilnya
echo var_dump(faktorisasi(30));
echo format_faktorisasi(30);
Untuk source codenya juga bisa dilihat dan di download melalui GitHub.
Sekian tutorial kali ini semoga bermanfaat dan jika ada kendala atau ada yang ingin ditanyakan, silahkan komen di kolom komentar di bawah ini.