Pendahuluan
Ada beberapa seri tutorial python di Jago Ngoding. Salah satunya adalah seri tutorial python dasar –itu kelas untuk pemula, ada juga seri tutorial python tingkat menengah, ada juga seri tutorial pyside, dan seri latihan logika dengan python yang sedang kita ikuti pada pertemuan ini.
Beberapa tutorial sudah selesai ditulis. Beberapa lagi masih proses. Sebagian lainnya juga masih perlu direview dan diimprovisasi lagi.
Intinya, pada seri tutorial ini kita akan membuat contoh-contoh kasus dan bagaimana cara memecahkannya dengan python, agar logika dan skill python kita bisa terasah dan terlatih.
Pada pertemuan ini, kita akan membuat aplikasi python yang akan menyelesaikan problem bilangan prima.
Definisi Bilangan Prima
Apa itu bilangan prima?
Bilangan prima adalah bilangan lebih dari 1 yang hanya memiliki 2 faktor (pembagi) saja: yaitu 1 dan dirinya sendiri. Artinya, sebuah bilangan prima tidak bisa dibagi dengan pembagi apa pun kecuali dengan angka 1 dan dirinya sendiri [1].
Contoh bilangan prima adalah angka 2: ia tidak memiliki pembagi apa pun selain 1 dan 2.
Contoh lain adalah bilangan 3. Bilangan 3 tidak bisa dibagi kecuali dengan angka 1 dan 3.
Dan contoh yang bukan bilangan prima adalah 4: karena ia memiliki pembagi lain selain angka 1 dan dirinya sendiri, yaitu angka 2.
Berikut ini deret bilangan prima dari angka 1 sampai 30:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29
Kegunaan Bilangan Prima
Ada beberapa kegunaan bilangan prima. Di antaranya adalah untuk menentukan pohon faktor (prima) dari suatu bilangan. Nanti dari pohon faktor tersebut bisa dicari faktor persekutuan terbesar (FPB) dan kelipatan persekutuan terkecil (KPK) [2].
Yang insyaallah keduanya (yaitu FPB dan KPK) akan kita coba juga penyelesaiannya pada pertemuan-pertemuan yang akan datang.
Algoritma Pengecekan Bilangan Prima
Kita sepakati dulu logika pemecahan masalahnya.
Untuk memeriksa apakah suatu bilangan adalah bilangan prima, saya akan memeriksa semua kemungkinan pembagi dari suatu bilangan. Kemungkinan faktor pembaginya adalah:
- bilangan 2
- sampai
bilangan itu sendiri
- 1
Misalkan kita akan memeriksa apakah bilangan 21
termasuk bilangan prima, maka:
- Kita akan mulai memeriksanya dengan membagikannya dengan 2. Bisa atau tidak?
- Kalau tidak bisa, lanjut ke kemungkinan berikutnya, yaitu bilangan 3. Bisa atau tidak?
- Kalau bisa, berarti bukan bilangan prima. Kita stop.
- Tapi kalau tidak bisa, kita lakukan iterasi berikutnya hingga ke angka 20 (bilangan itu sendiri - 1).
Tentu saja logika ini bukan logika terbaik. Ada banyak ruang dari algoritma ini yang bisa kita improve lagi lebih dalam. Tapi, untuk pemula saya kira algoritma ini cukup untuk menyelesaikan permasalahan bilangan prima dengan akurat.
Persiapan Ngoding
Langsung saja kita akan mulai ngoding. Teman-teman di sini bisa mulai membuka senjatanya masing-masing.
Agar bisa memahami kode program dengan baik, pastikan juga teman-teman telah familiar dengan beberapa materi python dasar berikut:
Dan satu lagi, jangan lupa secangkir kopi panas agar bisa lebih rileks.
Membuat Fungsi Pengecekan Bilangan Prima
Langkah yang pertama, kita akan membuat sebuah fungsi.
Mari kita namakan fungsi ini dengan nama is_prima()
. Fungsi ini akan mengembalikan nilai True
jika suatu bilangan yang diperiksa adalah bilangan prima, dan sebaliknya akan mengembalikan nilai False
jika bilangan yang diperiksa ternyata bukan prima.
Berikut ini kode programnya:
def is_prima (x):
return True
Pada kode program di atas, kita langsung mengembalikan nilai True
sebagai default.
Selanjutnya, mari kita periksa apakah bilangan x
adalah bilangan prima atau bukan.
def is_prima (x):
for i in range(2, x):
if x % i == 0:
return False
return True
Sekarang, kita bisa panggil fungsi is_prima()
untuk memeriksa beberapa bilangan, apakah termasuk bilangan prima atau bukan:
print(is_prima(5)) # True
print(is_prima(2)) # True
print(is_prima(4)) # False
print(is_prima(11)) # True
Untuk mengetahui apakah suatu bilangan bisa dibagi oleh bilangan lain adalah dengan operator modulus (
%
). Operator tersebut akan mengembalikan hasil bagi dari 2 operan. Jika hasil bagi dari 2 operan bernilai 0, maka itu artinya bilangan tersebut memang bisa dibagi oleh angka pembagi.
Membuat Fungsi Pencarian Bilangan Prima
Hal selanjutnya yang bisa kita manfaatkan dari fungsi di atas adalah:
- Mencari bilangan prima dari range angka tertentu.
Seperti misalkan kita akan mencari bilangan prima dari 1 - 10, atau dari 100 - 200, dan seterusnya.
Mari kita langsung buat saja.
Yang kita buat pertama kali adalah sebuah fungsi yang menerima 2 parameter yaitu angka awal dan angka akhir.
def cari_bilangan_prima (awal, akhir):
list_bilangan_prima = []
# di sini logika kita
return list_bilangan_prima
Pada fungsi di atas, kita akan mengembalikan sebuah list yang berisi bilangan prima yang terdapat di antara angka awal
sampai angka akhir
.
Untuk melakukannya kita bisa memanfaatkan fungsi is_prima()
yang telah kita buat sebelumnya.
Berikut penampakan akhir:
def cari_bilangan_prima (awal, akhir):
list_bilangan_prima = []
for x in range(awal, akhir + 1):
if is_prima(x):
list_bilangan_prima.append(x)
return list_bilangan_prima
Sekarang kita coba panggil:
print(cari_bilangan_prima(1, 40))
print(cari_bilangan_prima(100, 150))
print(cari_bilangan_prima(1050, 1100))
Output:
[1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]
[101, 103, 107, 109, 113, 127, 131, 137, 139, 149]
[1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097]
Pejelasan
- Pada fungsi di atas kita membuat satu buah list dengan nama
list_bilangan_prima
- List tersebut selanjutnya akan kita isi dengan bilangan-bilangan prima menggunakan fungsi
list.append()
- Kita melakukan perulangan dari range angka
awal
sampai angkaakhir + 1
.- Kenapa pakai
+ 1
? Itu akibat dari fungsirange()
yang tidak menjadikan batas sebagai angka terakhir, sehingga kita perlu menambahkannya dengan angka1
–jika ingin memasukkannya.
- Kenapa pakai
- Pada setiap iterasi, kita memanggil fungsi
is_prima(x)
untuk memeriksa apakah nilaix
adalah bilangan prima atau bukan. - Jika iya, maka ia akan dimasukkan ke dalam list.
- Dan jika tidak, program akan melanjutkan ke iterasi berikutnya.
Finishing
Program yang kita tulis secara umum telah berfungsi dengan baik.
Akan tetapi jika kalian ingin menjadi lebih baik lagi, kalian bisa menambahkan input agar angka yang kita periksa bisa ditentukan secara dinamis oleh user.
Kode Program Lengkap
Bagi kalian yang ingin mendapatkan kode program lengkap, silakan mengunjungi repositori python-latihan-logika di github.
Jangan lupa kasih ββ ya!
Pertemuan Selanjutnya
Untuk pertemuan berikutnya, insyaallah kita akan membahas hal yang sederhana. Kita akan membuat logika untuk mencari bilangan mana yang paling besar dari 3 bilangan.
Misal kita memiliki 3 bilangan berikut: 5 13 9
.
Bilangan mana yang paling besar? Dan mana yang terbesar kedua? Dan mana yang terkecil?
Insyaallah kita akan membuat logikanya hanya dengan if saja tanpa menggunakan list.
Terima kasih banyak! Jangan sungkan-sungkan untuk berkomentar!
Referensi
[1] https://www.zenius.net/blog/24719/bilangan-prima-dan-contohnya – diakses tanggal 4 Maret 2021
[2] https://id.wikipedia.org/wiki/Bilangan_prima – diakses tanggal 4 Maret 2021