天天看點

最大公約數,最小公倍數

最大公約數,最小公倍數

求兩個數的最大公約數,輾轉相除法無疑是一個很棒的算法,接下來就說說輾轉相除法并代碼實作它吧!ps:萌新第一次寫,不好的地方就這樣看着吧,反正你又不能順着網線來揍我。

輾轉相除法過程和證明過程可以百度一下啦,下面直接給出代碼實作吧

#include<stdlib.h>
#include<stdio.h>
/*
輸入兩個整數,求它們的最大公約數和最小公倍數


*/
int main (void){
	int gcd(int x,int y);//最大公約數
	int lcm(int x,int y);//最小公倍數
	printf("輸入兩個整數:");
	int a,b;
	scanf("%d  %d",&a,&b);	
	printf("%d和%d的最大公約數為%d\n",a,b,gcd(a,b));
	printf("%d和%d的最小公倍數為%d\n",a,b,lcm(a,b));

	return 0;
}

int gcd(int x,int y){//最大公約數
	if(y>x){//保證x>y
		int temp=x;
		x=y;
		y=temp;
	}
	int m=x%y;//餘數
	while(m!=0){//餘數為0結束
		x=y;
		y=m;
		m=x%y;
	}
	return y;//最大公約數
}

int lcm(int x,int y){//最小公倍數
	int m=gcd(x,y);//調用最大公約數

	return m*(x/m)*(y/m);//生成最小公倍數

}

           

繼續閱讀