1、用兩數乘積除以最大公約數。
int gcd(int x, int y)
{
return y?gcd(y,x%y):x;
}
int gcd(int x, int y) //注意:x,y 需大於0
{
int t;
while(y)
{
t=x%y;
x=y;
y=t;
}
return x;
}
int lcm(int x, int y)
{
return x*y/gcd(x,y);
}
2、擴大法
把大數依次擴大1倍2倍。。。
直到能整除小數,擴大成的這個數就是最大公倍數。
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)<(y)?(x):(y))
int lcm(int x, int y)
{
int max=MAX(x,y), min=MIN(x,y);
for(int i=1;;i++)
{
if(!((max*i)%min))
return max*i;
}
}
3、如果兩數互質,他們的乘積就是最大公倍數。
如何判斷兩數是否互質。
如果他們的最大公約數為1,他們就互質。
(這其實是方法1的特殊情況。)
如果兩個數都是質數,它們互質。
如果兩個數中較大的數是質數,它們互質。
如果兩個數中較小的數是質數,且小數不能被大數整除,它們是質數。
1與任何數互質。
等等。
4、如果大數是小數的倍數,大數就是最大公倍數。(其實是方法2的特殊情況)