Skip to content Skip to sidebar Skip to footer

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.

Rinaldi Pratama Putra
Rinaldi Pratama Putra Reality is a lovely place, but I wouldn't wanna live there.