Project Euler – Langkah Pertama dalam Matematika Komputasi

Matematika merupakan sesuatu yang sangat menyeramkan bukan? Apa ada disini yang tertarik dengan matematika?

Pasti ada dong….

Baiklah, matematika ini banyak cabangnya ya… Dan saya paling suka dengan matematika komputasi, karena itu berhubungan dengan sesuatu yang benar-benar saya sukai, yaitu programming. Ada yang berminat untuk belajar matematika komputasi?

Jika kalian berminat, kalian bisa mempelajari berbagai macam teorinya di google dan kemudian, kalian bisa mengasah kemampuan kalian dalam memecahkan masalah matematika ini di website ini.

Nama website nya adalah projecteuler. Mungkin nama web ini diambil dari nama seorang ilmuwan matematis yang menemukan konstanta bilangan irasional logaritma natural, bilangan e.

Disini ada banyak sekali masalah yang selain mengasah kemampuan programming kita, juga mengasah kemampuan matematis kita.

Saya akan bahas salah satu dari masalah di project euler ini sebagai stimulus untuk kalian semua. Saya harap kedepannya kalian bisa melanjutkan hal ini, meskipun saya masih di soal nomor 20 juga.

Oke, soal yang pertama bisa kalian lihat di sini

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.

Kita disuruh mencari jumlah kelipatan 3 atau 5 dibawah 1000. Ada yang punya ide

Oke, mungkin jika kalian sudah mahasiswa, kalian akan mengusulkan rumus-rumus barisan dan deret untuk menjumlahkan semuanya.

Rumus Un = a + (n-1)b dan seterusnya yang saya pikir hal itu cukup membuang waktu untuk dikerjakan.

Ingat, kita belajar komputasi, kita menggunakan komputer untuk menghitungnya. Oke, kalian bisa menggunakan rumus itu dan menghitungnya menggunakan kalkulator, tapi ayolah… Bukankah itu artinya kalian semua mempersulit diri.

Untuk yang penasaran tahapan matematika konvensional adalah seperti ini.

  1. Ini adalah barisan aritmatika, jadi kita perlu beda
  2. Beda di set menjadi 3, 5 kemudian 15
  3. Kita cari banyaknya bilangan 1 – 1000 yang habis dibagi 3 dengan rumus Un
  4. Kita cari jumlah bilangan 1 – 1000 yang habis dibagi 3 dengan rumus Sn anggaplah itu S3
  5. Ulangi itu untuk 5 dan 15
  6. Lalu kita tambahkan S3 + S5 – S15

Cara yang agak rumit dan mungkin mempersulit diri dengan persamaan yang membuat kita mikir dua kali.

Lalu, gimana cara mudahnya?

Ada sekitar 1000 bilangan antara 1 – 1000. Jika kita memaksa komputer mengeceknya satu persatu dan kemudian menambahkan bilangan itu jika habis dibagi 3 atau 5, maka kita akan memaksa komputer mengecek 1000 kali.

Oke, jika kita disuruh ngecek gitu kita pasti akan bosan. Tapi komputer berbeda, dia bisa melakukan seratus juta perhitungan per detik. Artinya pengecekan 1000 bilangan itu hanya akan makan waktu tidak lebih dari satu milidetik.

Lebih cepat kan? Tapi, gimana caranya?

Kita susun dulu algoritma yang bisa kita lakukan untuk melakukan pengecekan.

  1. Ambil angka pertama (satu)
  2. Cek apakah angka tersebut habis dibagi 3 atau 5
  3. Jika habis dibagi, maka tambahkan angka tersebut
  4. Jika tidak maka ambil angka selanjutnya
  5. Ulangi lagi langkah 2 sampai bilangannya 1000

Terdengar efektif dan efisien kan? Setelah melihat algoritmanya secara menyeluruh, maka kita harus melakukan perincian setiap langkah tersebut dan mengubahnya menjadi bahasa pemrograman.

Saya akan menggunakan python untuk melakukan hal ini.

Pertama, kita butuh variabel untuk mengambil angka yang di cek dan angka yang dijumlah

angka_yang_dicek,
angka_yang_dijumlah = 1, 0

Lalu kita akan melakukan pengecekan. Pengecekan dapat dilakukan dengan logika if dan mod (mod adalah mengecek sisa pembagian. Jika habis dibagi maka sisanya adalah 0)

if
angka_yang_dicek%3 == 0 or angka_yang_dicek%5 == 0

Lalu jika benar kita akan menjumlahnya.

angka_yang_dijumlah
+= angka_yang_dicek

Setelah itu kita tambahkan satu pada angka yang dicek

angka_yang_dicek +=
1

Dan terakhir masukkan itu dalam blok perulangan while. Full code nya bisa dilihat dibawah

angka_yang_dicek, angka_yang_dijumlah = 1, 0
while angka_yang_dicek < 1000 :
if angka_yang_dicek%3 == 0 or angka_yang_dicek%5 == 0 :
angka_yang_dijumlah += angka_yang_dicek
angka_yang_dicek += 1
print(angka_yang_dijumlah)

Setelah itu coba di run dan akan terlihat jumlahnya. Gimana? Lebih mudah kan?

Intinya, dalam matematika komputasi kita harus lebih open minded dan lebih terbuka lagi. Bukan hanya terpatok pada rumus, tetapi melakukan sesuatu yang efektif dan efisien.

Good Luck

Project Euler – Langkah Pertama dalam Matematika Komputasi

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Kembali ke Atas
www.000webhost.com