สำหรับใครที่กำลังมองหารหัสที่ทำงานได้อย่างรวดเร็วลองสิ่งนี้:
ผมเขียนฟังก์ชั่นlcm_n(args, num)
ซึ่งคำนวณและส่งกลับ LCM args
ของตัวเลขทั้งหมดในอาร์เรย์ พารามิเตอร์ที่สองnum
คือการนับจำนวนในอาร์เรย์
ใส่ตัวเลขเหล่านั้นทั้งหมดในอาร์เรย์args
แล้วเรียกใช้ฟังก์ชันเช่นlcm_n(args,num);
ฟังก์ชันนี้ส่งคืน lcm ของตัวเลขเหล่านั้นทั้งหมด
นี่คือการใช้ฟังก์ชั่นlcm_n(args, num)
:
int lcm_n(int args[], int num) //lcm of more than 2 numbers
{
int i, temp[num-1];
if(num==2)
{
return lcm(args[0], args[1]);
}
else
{
for(i=0;i<num-1;i++)
{
temp[i] = args[i];
}
temp[num-2] = lcm(args[num-2], args[num-1]);
return lcm_n(temp,num-1);
}
}
ฟังก์ชันนี้ต้องการฟังก์ชันสองฟังก์ชันที่ต่ำกว่า ดังนั้นเพียงแค่เพิ่มพวกเขาไปพร้อมกับมัน
int lcm(int a, int b) //lcm of 2 numbers
{
return (a*b)/gcd(a,b);
}
int gcd(int a, int b) //gcd of 2 numbers
{
int numerator, denominator, remainder;
//Euclid's algorithm for computing GCD of two numbers
if(a > b)
{
numerator = a;
denominator = b;
}
else
{
numerator = b;
denominator = a;
}
remainder = numerator % denominator;
while(remainder != 0)
{
numerator = denominator;
denominator = remainder;
remainder = numerator % denominator;
}
return denominator;
}