Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ เพื่อค้นหา LCM


ตัวคูณร่วมน้อย (LCM) ของตัวเลขสองตัวคือจำนวนที่น้อยที่สุดที่เป็นผลคูณของทั้งสอง

ตัวอย่างเช่น สมมติว่าเรามีตัวเลขสองตัวต่อไปนี้:15 และ 9

15 = 5 * 3
9 = 3 * 3

ดังนั้น LCM ของ 15 และ 9 คือ 45

โปรแกรมหาค่า LCM ของตัวเลขสองตัวมีดังต่อไปนี้ -

ตัวอย่าง

#include <iostream>
using namespace std;
int main() {
   int a=7, b=5, lcm;
   if(a>b)
   lcm = a;
   else
   lcm = b;
   while(1) {
      if( lcm%a==0 && lcm%b==0 ) {
         cout<<"The LCM of "<<a<<" and "<<b<<" is "<<lcm;
         break;
      }
      lcm++;
   }
   return 0;
}

ผลลัพธ์

The LCM of 7 and 5 is 35

ในโปรแกรมข้างต้น ตัวแปร lcm ถูกตั้งค่าให้มีค่ามากกว่าของตัวเลขสองตัว ซึ่งแสดงให้เห็นโดยใช้ข้อมูลโค้ดต่อไปนี้

if(a>b)
lcm = a;
else
lcm = b;

หลังจากนี้ วง while จะทำงาน ในลูปนี้ หาก LCM หารด้วย a และ b ลงตัว จะเป็น LCM ของตัวเลขทั้งสองและแสดงขึ้น ถ้าไม่เช่นนั้น LCM จะเพิ่มขึ้นจนกว่าจะเป็นไปตามเงื่อนไขนี้

ข้อมูลโค้ดที่อธิบายเรื่องนี้มีดังนี้ -

while(1) {
   if( lcm%a==0 && lcm%b==0 ) {
      cout<<"The LCM of "<<a<<" and "<<b<<" is "<<lcm;
      break;
   }
   lcm++;
}

อีกวิธีในการค้นหา LCM ของตัวเลขสองตัวคือการใช้สูตร LCM และ GCD สูตรนี้ระบุว่าผลคูณของตัวเลขสองตัวเท่ากับผลคูณของ LCM และ GCD

a * b = GCD * LCM

โปรแกรมหาค่า LCM ของตัวเลขสองตัวโดยใช้สูตรมีดังนี้ −

ตัวอย่าง

#include<iostream>
using namespace std;
int gcd(int a, int b) {
   if (b == 0)
   return a;
   return gcd(b, a % b);
}
int main() {
   int a = 7, b = 5;
   cout<<"LCM of "<< a <<" and "<< b <<" is "<< (a*b)/gcd(a, b);
   return 0;
}

ผลลัพธ์

The LCM of 7 and 5 is 35

ในโปรแกรมข้างต้น จะพบ LCM โดยใช้สูตร ขั้นแรก รับ GCD ของ a และ b โดยใช้ gcd() เป็นฟังก์ชันแบบเรียกซ้ำ มันมีพารามิเตอร์สองตัวคือ a และ b ถ้า b มากกว่า 0 แล้ว a จะถูกส่งกลับไปยังฟังก์ชัน main() มิฉะนั้น gcd() ฟังก์ชันจะเรียกตัวเองซ้ำด้วยค่า b และ a%b

ซึ่งแสดงให้เห็นโดยใช้ข้อมูลโค้ดต่อไปนี้

int gcd(int a, int b) {
   if (b == 0)
   return a;
   return gcd(b, a % b);
}

หลังจากได้รับ GCD แล้ว LCM จะถูกคำนวณโดยใช้สูตร จากนั้นจะแสดง ซึ่งแสดงในข้อมูลโค้ดต่อไปนี้

cout<<"LCM of "<< a <<" and "<< b <<" is "<< (a*b)/gcd(a, b);