C語言最大公約數示例教程

窮舉法

(1) i= a ,b中較小的數
(2)若a,b能同時被i整除,則i即為最大公約數,結束
(3)若不能,則 i–,再回去執行(2)

#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	scanf("%d %d", &i, &j);
	int k = i > j ? i : j;//i>j,k=i;i<j,k=j
	while(1)
	{
		if (i%k == 0 && j%k == 0)
		{
			printf("最大公約數為;%d\n", k);
			break;
		}
		k--;
	}
	return 0;
}

 輾轉相除法

輾轉相除法求兩個數的最大公約數的步驟如下:
(1)先用小的一個數除大的一個數,得第一個餘數;
(2)再用第一個餘數除小的一個數,得第二個餘數;
(3)又用第二個餘數除第一個餘數,得第三個餘數;
這樣逐次用後一個數去除前一個餘數,直到餘數是0為止。那麼,最後一個除數就是所求的最大公約數。

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d %d", &a, &b);
	while (c = a%b)
	{
		a = b;
		b = c;
	}
	printf("%d\n", b);
	return 0;
}

 輾轉相減法

兩整數a和b:
(1) 若a>b,則a=a-b
(2)若a<b,則b=b-a
(3) 若a=b,則a(或b)即為兩數的最大公約數,結束
(4)若a≠b,則再回去執行(1)

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d%d", &a, &b);
	int ret = 0;
	while (1)
	{
		if (a < b)
		{
			int tmp = 0;
			tmp = a;
			a = b;
			b = tmp;
		}
		ret = a - b;
		if (ret == b)//判斷
		{
			printf("ret = %d", ret);
			break;
		}
		else//交換
		{
			a = b;
			b = ret;
		}
	}
	return 0;
}

以上就是C語言最大公約數示例詳解的詳細內容,更多關於C語言最大公約數的資料請關註WalkonNet其它相關文章!

推薦閱讀: