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

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


Liat program


Sekian semoga bermanfaat, jika ingin ditanyakan bisa lewat media sosial yang ada di widget.


HALAMAN TERPOTEKSI

Komentar

Posting Komentar