Program Mencari FPB dengan Bahasa C++
Assalamualaikum
Source code untuk program mencari FPB dengan bahasa pemrograman C++. Penyelesaian program ini menggunakan cara looping for. Pertama analisis dulu apa sih FPB? Faktor Persekutuan terbesar adalah faktor pembagi terbesar yang nilainya sama. Misalkan 4 dan 2 maka FPB-nya 2 karena 2 adalah bilangan terbesar yang dapat membagi habis kedua bilangan tersebut dan faktor persekutuannya adalah 1 dan 2. Jadi dapat disimpulkan adalah FPB adalah nilai yang dapat membagi habis suatu bilangan dengan kata lain yang menghasilkan mod sama dengan nol.
Misalkan ada bilangan x dan y. FPB x dan y adalah semua bilangan yang dapat membagi habis x dan y. Misalkan bilangan tersebut z maka z merupakan FPB jika z merupakan bilangan terbesar jika dan hanya jika xmodz dan ymodz sama dengan nol.
Misalkan
x%z = 4%1= 0
x%z = 2%1= 0
// 1 bukan FPB karena bukan nilai terbesar yang dapat membagi habis keduanya
x%z = 4%2 = 0
x%z = 2%2 = 0
// 2 adalah FPB karena dapat membagi habis kedua bilangan dan tidak ada bilangan yang lebih besar dari 2 yang dapat membagi habis keduanya
x%z = 4%1= 0
x%z = 2%1= 0
// 1 bukan FPB karena bukan nilai terbesar yang dapat membagi habis keduanya
x%z = 4%2 = 0
x%z = 2%2 = 0
// 2 adalah FPB karena dapat membagi habis kedua bilangan dan tidak ada bilangan yang lebih besar dari 2 yang dapat membagi habis keduanya
Berikut adalah source code dengan menggunakan C++
Pembahasan x dan y adalah nilai yang akan dicari FPB-nya. Z adalah nilai FPB yang dicari menggunakan looping dan a adalah variable untuk menyimpan nilai z yang bernilai true. Mari bahas cara kerja looping pada program ini
for (z=1; z<=x; z++) { if (x%z==0 && y%z==0) { a=z; cout<<a<<" "; } } cout<<"}\nNilai FPB : "<<a<<"\n\n";
Inisalisasi z=1 artinya nilai z pertama bernilai 1 dan looping akan berhenti saat z sama dengan x dan z akan bertambah 1 hingga mencapai nilai z sama dengan x. Kenapa yang dipakai x? Karena hasilnya sama saja. Kenapa demikian? Jawabannya ada pada statement pengedalian yang ada didalam fungsi looping
Karena yang dicari hanya nilai xmodz dan ymodz yang sama dengan nol maka harus dibuat statement ini. Jadi tidak masalah nilai x yang terbesar atau pun yang terkecil karena yang muncul tetap hanya nilai z terbesar yang dapat membagi keduanya. Nilai x lebih kecil dari y tidak masalah karena nilai z tidak mungkin lebih besar dari x.
Misalkan nilai x = 6 dan y = 12
Maka :
|
|||||
saat z = 1
|
6%1 = 0
|
True
|
12%1 = 0
|
True
|
Karena True maka akan muncul hasil 1
|
saat z = 2
|
6%2 = 0
|
True
|
12%2 = 0
|
True
|
Karena True maka akan muncul hasil 2
|
saat z = 3
|
6%3 = 0
|
True
|
12%3 = 0
|
True
|
Karena True maka akan muncul hasil 3
|
saat z = 4
|
6%4 = 2
|
False
|
12%4 = 0
|
True
|
Hasil ini false karena yang diminta adalah keduanya habis dibagi
artinya 4 tidak akan muncul dilayar
|
saat z = 5
|
6%5 = 1
|
False
|
12%5 = 2
|
False
|
Hasil ini false karena keduanya tak dapat membagi habis artinya 5
tidak akan muncul di layar
|
saat z = 6
|
6%6 = 0
|
True
|
12%6 = 0
|
True
|
Karena True maka akan muncul hasil 6 sebagai FPB
|
Kenapa hanya berhenti pada 6? Semua angka yang lebih besar dari 6 tidak akan habis membagi 6 (6%x ≠ 0 || x>6 ).
do
{
………………….
}
while (z>1)
|
Ini adalah fungsi looping agar program mengulang lagi, ya
agar tidak perlu close program aja. Sebenernya bisa menggunakan rekursi tapi
kan ini fokusnya looping jadi kembali keawalnya pake looping aja
Sekian semoga bermanfaat, jika ingin ditanyakan bisa lewat media sosial yang ada di widget.
aseeeeeeeekk
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapus