در این جلسه تیم کدگیت را با آموزش ک م م در c++ همراهی کنید. پیش نیاز این آموزش آشنایی با متد و دستورات شرطی(if) در c++ است.
کوچکترین مضرب مشترک(ک م م)
کوچکترین مضرب مشترک یکی از مسایل در رشته ریاضی است. برای محاسبه ک م م بین دو عدد کافی است عددی پیدا کنیم که بر هر دو عدد بخش پذیر باشد و کوچکترین مضربی باشد که چنین ویژگی را دارد. برای مثال ک م م دو عدد 2 و 3 عدد 6 است.ک م م سه ویژگی زیر را دارد:
- ک م م هر عددی با عدد 0 میشود 0 .
- ک م م هر عدد با 1 میشود خود عدد.
- ک م م دو عدد یکسان برابر با خودش است.
پیاده سازی ک م م در c++
برای پیاده سازی ک م م در c++ از فرمول های ریاضی استفاده میکنند. ولی ما در اینجا با استفاده از دستورات شرطی به حل مسئله ک م م در c++ میپردازیم.
در ابتدای کار ما نیاز به دو عدد داریم که ک م م آنها را پیدا کنیم. ما این دو عدد را a و b مینامیم. سپس متدی به نام lcm مینویسیم که a و b را میگیرد و خروجی آن ک م م a و b است.روش پیاده سازی ک م م به این صورت است که ما عدد بزرگتر را در نظر میگیریم و مضرب های آن را محاسبه میکنیم(یعنی مثلا a*1 , a*2 …) سپس مضرب های حاصل را بر عدد کوچکتر تقسیم میکنیم اگر باقیمانده صفر باشد ک م م را پیدا کرده ایم.
#include <iostream>
#include <stdio.h>
using namespace std;
int LCM(int a , int b);
int main() {
int a = 0;
int b = 10;
int lcm = LCM(a,b);
printf("%d",lcm);
return 0;
}
int LCM(int a, int b){
int lcm = 0;
if (a == 0 || b == 0) {
lcm = 0;
} else {
if (a == b) {
lcm = a;
} else if (a < b) {
if (b % a == 0) {
lcm = b;
} else {
int factor = 2;
bool foundlcm = false;
while (!foundlcm) {
int multiple = factor*b;
if (multiple%a==0) {
lcm = multiple;
foundlcm = true;
}
factor++;
}
}
} else if (a > b) {
if (a % b == 0) {
lcm = a;
}else{
int factor = 2;
bool foundlcm = false;
while (!foundlcm) {
int multiple = factor*a;
if (multiple%b==0) {
lcm = multiple;
foundlcm = true;
}
factor++;
}
}
}
}
return lcm;
}
کد ک م م در c++ را میتوان چند قسمت کرد:
- اگر یکی از اعداد a و b صفر باشند
- اگر اعداد a و b با هم برابر باشند.
- اگر اعداد a و b مضرب هم باشند(بر هم بخشپذیز باشند مثل 2 و 4).
- اگر جز حالات 1 تا 3 نباشند.
ما در کد بالا ابتدا چک کردیم که اعداد ورودی برایر 0 هستند یا خیر. اگر نبودند برابری آن دو عدد را نیز بررسی کردیم و باز هم اگر برابر نبودند عدد بزرگتر را پیدا میکنیم و به دنبال مضربی از این عدد میگردیم که بر عدد کوچکتر نیز بخشپذیر باشد. سپس خروجی را برمیگردانیم.
دو متغیر factor به عنوان عددی متغیر برای محاسبه مضرب عدد بزرگتر و foundlcm نیز متغیری است برای خروج از while وقتی که ما ک م م را پیدا کردیم.
با استفاده از تابع به دست اوردن ب م م به راحتی میشه اثبات کرد ک م م برابر ضرب دو عدد تقسیم بر ب م م آنهاست