此程式用了3個方法(相減法、窮舉法、輾轉相除法)來求兩數的最大公約數,使用者可自己選擇用哪種演算法。

#include<stdio.h>
#include<stdlib.h>
int select=1;//select 為是否退出系統的標記
void subtract()
{
	int a,b;
	printf("請輸入兩個資料:\n");  
	scanf("%d %d", &a, &b); 
	while(a!=b)//用大數減小數直到差和減數相同,輸出最大公約數
	{
		if(a>b) a=a-b;
		else b=b-a;
	}
   printf("最大公約數為%d。\n", a);  
		   
}
void divide()//輾轉相除法
{	
	int a, b, c;  
	printf("請輸入兩個資料:\n");  
	scanf("%d %d", &a, &b);  
	while(b!=0)  //當餘數為0時跳出迴圈	
	{ 
		c=a%b; 
		a=b; 
		b=c;
	}  
	printf("最大公約數為%d。\n", a);  
	
}
void exhaustion()//窮舉法求最大公約數
{
	int a,b,c;
	printf("請輸入兩個資料:\n");  
	scanf("%d %d", &a, &b);  
	for(c=a;c>0;c--)
		if(a%c==0&&b%c==0)//第一次可以整除的數為最大公約數
		{
			printf("最大公約數為%d。\n",c);
			break;//獲得最大公約數就跳出迴圈
		}
}
void menu()//初始介面
{
	int i;
	printf("\n");
	printf("                          求兩數的最大公約數演算法                   \n");
	printf("           ********************************************************\n");
	printf("           *                     請選擇演算法:                     *\n");
	printf("           *              0.相減法。      1.相除法。              *\n");
	printf("           *              2.窮舉法。      3.退出程式。            *\n");
	printf("           ********************************************************\n");
	
	scanf("%d",&i);
	switch(i)
	{
	case 0:
		subtract();break;
	case 1:
		divide();break;
	case 2:
		exhaustion();break;
	case 3:
		select =0;break;
	default:
		printf("請在0-3之間選擇\n");
	}
}
int main()
{ 
	while(select)
	{
		menu();
	}
	system("pause");
	return 0;
} 



.