ภาพรวม
ได้รับจำนวนเต็มสองจำนวน Num1 และ Num2 สามารถแสดงเป็นเศษส่วน Num1/Num2 เป้าหมายคือลดเศษส่วนนี้ให้อยู่ในรูปแบบต่ำสุด (Lowest Terms)
ใช้ GCD หาตัวหารร่วมมาก
- คำนวณ Greatest Common Divisor (GCD) ของทั้งสองจำนวน
- หารทั้งสองจำนวนด้วย GCD นั้น
- ตั้งค่าทั้งสองตัวแปรเป็นผลหาร
- เศษส่วนต่ำสุดจะเป็น Num1/Num2
ตัวอย่าง
อินพุต − Num1 = 22, Num2 = 10
เอาต์พุต − Num1 = 11, Num2 = 5
Lowest Fraction: 11/5
คำอธิบาย − GCD ของ 22 และ 10 คือ 2
22/2 = 11, 10/2 = 5
เศษส่วนต่ำสุดคือ 11/5
อินพุต − Num1 = 36, Num2 = 40
เอาต์พุต − Num1 = 9, Num2 = 10
Lowest Fraction: 9/10
คำอธิบาย − GCD ของ 36 และ 40 คือ 4
40/4 = 10, 36/4 = 9
เศษส่วนต่ำสุดคือ 9/10
แนวทางการแก้ปัญหา
คำนวณ GCD แบบเรียกซ้ำ หารทั้งสองจำนวนด้วย GCD ได้ผลหาร นำมาเป็นเศษส่วนต่ำสุด
- รับตัวแปร
Num1และNum2 - ฟังก์ชัน
findGCD(int a, int b)คืน GCD แบบเรียกซ้ำ: หาก b==0 คืน a มิฉะนั้น คืนfindGCD(b, a%b) - ฟังก์ชัน
lowestFraction(int num1, int num2)พิมพ์เศษส่วนต่ำสุด - หา
denom = findGCD(num1, num2) - ตั้ง
num1 /= denom,num2 /= denom - พิมพ์ num1, num2 และเศษส่วน
num1/num2
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
int findGCD(int a, int b) {
if (b == 0)
return a;
return findGCD(b, a % b);
}
void lowestFraction(int num1, int num2){
int denom = findGCD(num1, num2);
num1 /= denom;
num2 /= denom;
cout << "Num1 = " << num1 << endl;
cout << "Num2 = " << num2 << endl;
cout << "Lowest Fraction : " << num1 << "/" << num2;
}
int main(){
int Num1 = 14;
int Num2 = 8;
lowestFraction(Num1, Num2);
return 0;
}
ผลลัพธ์
Num1 = 7 Num2 = 4 Lowest Fraction : 7/4