บวกเศษส่วน a/b + c/d โดยหาตัวหารร่วมน้อย (LCM) ผ่าน GCD แล้วลดรูปผลลัพธ์
ตัวอย่าง
1/4 + 2/12 = 5/12 (LCM=12) 1/4 + 2/4 = 3/4 (ตัวหารเท่ากันบวกตัวเศษได้เลย)
ขั้นตอน
- หา GCD ของตัวหารทั้งสอง
- LCM = (den1 * den2) / GCD
- ปรับตัวเศษ: n3 = n1*(LCM/den1) + n2*(LCM/den2)
- ลดรูปด้วย GCD ของตัวเศษและตัวหารผลลัพธ์
โค้ดตัวอย่าง
#include <stdio.h>
int gcd(int a, int b) {
if (a == 0) return b;
return gcd(b % a, a);
}
void smallest(int *den3, int *n3) {
int cf = gcd(*n3, *den3);
*den3 /= cf; *n3 /= cf;
}
void add_frac(int n1, int den1, int n2, int den2, int *n3, int *den3) {
*den3 = gcd(den1, den2);
*den3 = (den1 * den2) / *den3; // LCM
*n3 = n1 * (*den3 / den1) + n2 * (*den3 / den2);
smallest(den3, n3);
}
int main() {
int n1=1, den1=4, n2=2, den2=12, n3, den3;
add_frac(n1, den1, n2, den2, &n3, &den3);
printf("%d/%d + %d/%d = %d/%d\n", n1,den1,n2,den2,n3,den3);
return 0;
}
ผลลัพธ์
1/4 + 2/12 = 5/12