Skip to content

Commit a584a8b

Browse files
feat: menambahkan materi lcm
# Deskripsi (Description) Menambahkan materi `Kelipatan persekutuan terbesar (FPB)` atau `Least Common Multiple (LCM)` dalam file `lcm.cpp`. ## Perubahan yang Diberikan Program ini menghitung nilai **LCM (KPK)** dari dua bilangan bulat dengan menggunakan pendekatan: - Fungsi **`gcd`**: Menggunakan **Euclidean Algorithm berbasis pengurangan (subtraction method)**. - Fungsi **`lcm`**: Menggunakan rumus: $$ \text{LCM}(a, b) = \frac{a \times b}{\text{GCD}(a, b)} $$ ## ✅ Perubahan yang Diberikan ### 1. Fungsi `gcd` menggunakan metode rekursif (Euclidean Algorithm) - Mencari Faktor Persekutuan Terbesar (FPB) dari dua bilangan. - Menggunakan pendekatan rekursif berbasis pengurangan (tanpa menggunakan operasi modulo). - Time Complexity: **O(min(a, b))** - Space Complexity: **O(min(a, b))** - Disertai komentar langkah demi langkah. ### 2. Fungsi `lcm` untuk mencari Kelipatan Persekutuan Terkecil - Menghitung LCM dengan membagi hasil kali dua bilangan dengan GCD-nya. - Hasil ditampilkan langsung menggunakan `std::cout`. - Dokumentasi internal menjelaskan rumus dan proses perhitungan secara jelas. --- # Checklist: ##### Umum: - [ x] Saya menambah algoritma terbaru. ##### Contributor Requirements (Syarat Kontributor) dan Lain-Lain: - [x ] Saya sudah membaca (I have read) [CONTRIBUTING](https://github.com/bellshade/CPP/blob/main/CONTRIBUTING.md) dan sudah menyetujui semua syarat. - [ x] Saya telah menambahkan komentar kode yang memberikan penjelasan maksud dari kode yang saya buat. - [ x] Saya menggunakan bahasa Indonesia untuk memberikan penjelasan dari kode yang saya buat. # Environment Saya menggunakan (I'm using): - ``OS`` = `Linux` - ``g++`` = `11.4.0` # Link Issues Issues : # This Commit License https://github.com/bellshade/CPP/blob/main/license Co-authored-by: bellshadebot <[email protected]>
1 parent 7d9fde8 commit a584a8b

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

math/lcm.cpp

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/**
2+
* @file lcm.cpp
3+
* @brief source code untuk mencari nilai least common divisor dua bilangan
4+
*
5+
* @authors Yusuf
6+
*
7+
* @date juli 2025
8+
*/
9+
#include <iostream>
10+
/**
11+
* @brief fungsi untuk mendapatkan nilai gcd(greates common divisor)
12+
* @param a bilangan pertama
13+
* @param b bilangan kedua
14+
* @return bilangan yang merepresentasikan gcd/fpb
15+
*/
16+
int gcd(int a,int b){
17+
//base case
18+
if(a == 0){
19+
return b;
20+
}
21+
//base case
22+
if(b == 0){
23+
return a;
24+
}
25+
//base case
26+
if(a == b){
27+
return a;
28+
}
29+
if(a > b){
30+
return gcd(a - b,b);
31+
}else{
32+
return gcd(a,b - a);
33+
}
34+
}
35+
/**
36+
* @brief fungsi untuk mencari nilai least common divisor(lcm)
37+
* atau biasa dikenal kelipatan persekutuan terbesar
38+
* dengan rumus:
39+
* lcm = (a * b) / gcd(a,b)
40+
* kita dapat mencari nilai gcd dengan menggunakan
41+
* euclid algorithm dengan metode substraction pendekatan rekursif
42+
* @param a bilangan pertama
43+
* @param b bilangan kedua
44+
* @return nilai yang merepresentasikan nilai lcm/kpk
45+
*/
46+
void lcm(int a,int b){
47+
int fpb = gcd(a,b);
48+
49+
int kpk = (a * b) / fpb;
50+
std::cout << "lcm (" << a << "," << b << ") = " << kpk << std::endl;
51+
}
52+
int main(){
53+
int a,b;
54+
std::cout << "Masukkan bilangan pertama: ";
55+
std::cin >> a;
56+
std::cout << "Masukkan bilangan kedua: ";
57+
std::cin >> b;
58+
lcm(a,b);
59+
return 0;
60+
}

0 commit comments

Comments
 (0)