辗转相除法,相减法,穷举法求最大公约数

题目:从键盘输入两个整数,输出两个整数的最大公约数。用CC++语言实现程序解决问题。

编辑人员:李林轩

时间:2017.3.20

程序算法

辗转相除法

有两整数ab

1.a%b得余数c

2.c=0,则b即为两数的最大公约数

3.c≠0,则a=bb=c,再回去执行1

相减法

有两整数a和b:

1.若a>b,则a=a-b

2. 若a

3. 若a=b,则a(或b)即为两数的最大公约数

4. 若a≠b,则再回去执行1

穷举法

有两整数a和b:

1. i= a(或b)

2. 若a,b能同时被i整除,则i即为最大公约数,结束

3. i--,再回去执行2

代码

#include
#include
void help();
void menu();
void xiangjian();
void xiangchu();
void qiongju();
int q=1;
int main()
{ 
	while(q)
	{
		menu();
	}
	system("pause");
	return 0;
}
void help()
{
	printf("欢迎使用最小公倍数计算系统\n");
	printf("用0--4选择所要执行的操作\n");
	printf("在输入的两个数字之间用逗号隔开\n");
	printf("谢谢您的使用\n");
}
void xiangjian()//相减法求最大公约数
{    
	int a,b;
	printf("请输入两个整数 :");
	scanf("%d,%d",&a,&b);
	while(a!=b)//a不等b
		if(a>b)
		{
			a=a-b;
		}
		else
		{
			b=b-a;
		}
	printf("最大公约数:%d\n",a);
} 
void qiongju()   //穷举法求最大公约数
{
	int m,n,a,b,y;  
    	printf("输入两个数字:\n");  
    	scanf("%d,%d",&a,&b);
   	m=a; 
   	n=b;   
    	for (y=a;y>0;y--)     
       	if (a%y==0&&b%y==0)break;  
	   	printf("最大公约数是:%d\n",y); 
}
void xiangchu()//相除法求最大公约数
{
	int a,b,c,x,y; 
	printf("请输入两个数字:\n");  
    	scanf("%d,%d",&a,&b);  
	x=a;  
	y=b;  
    	while(b!=0)  //一直除到余数等于0停止循环   
    	{ 
		c=a%b;
		a=b; 
		b=c;
	}  
	printf("最大公约数是:%d\n",a);   
}
void menu()//界面菜单
{
	int num;
	printf("**********************\n");
	printf("*三种算法求最大公约数*\n");
	printf("**********************\n"); 
	printf("*        菜单        *\n");
	printf("**********************\n");
	printf("* 0.系统帮助及说明   *\n");
	printf("**********************\n"); 
	printf("* 1.相减法           *\n");
	printf("**********************\n");
	printf("* 2.穷举法           *\n");
	printf("**********************\n");
	printf("* 3.辗转相除法       *\n");
	printf("**********************\n");
	printf("* 4.退出系统         *\n");
	printf("**********************\n");
	printf("请选择菜单编号:");
	scanf("%d",&num);
	switch(num)
	{ 
	case 0:help();break;
	case 1:xiangjian();break;
	case 2:qiongju();break;
	case 3:xiangchu();break;
	case 4:q=0;break;
	default:printf("请在0-4之间选择\n");
	}
}
 
  




你可能感兴趣的:(辗转相除法,相减法,穷举法求最大公约数)