求最小公倍數的幾種方法


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的特殊情況)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM