计算最大公约数

算法:穷举法先将x,y两值比较大小并且互换,再进行与各种数的整除,如果这个数能同时被x,y整除,那么这个数就为最大公约数。

代码如下:

void exhaustion()
{
    int x,y,t;
    scanf("%d%d",&x,&y);
    if(x<y)
	{
      t=x;
      x=y;
      y=t;
	}
    for(t=y;x%t||y%t;t--);
    printf("%d\n",t);
}

算法:辗转相减法通过大量的减法赋值,通过x,y的差来寻找他们的最大公约数,经过多次的加减以后,x,y最终相等,得到最大公约数

代码如下:


void subtract()
{
    int x,y;
    scanf("%d%d",&x,&y);
    while(x!=y)
	{
	  while(x>y)
	  {
		x=x-y;
	  }
	  while(x<y)
	  {
		y=y-x;
	  }
	  printf("%d\n",x);
	}
}
算法:辗转相除法就是将x ,y相除,他们的余数再进行相除。

代码如下:

Void divide()
{
    int x,y,r;
    scanf("%d%d",&x,&y);
    r=x%y;
    while(r)
	{
      x=y;
      y=r;
      r=x%y;
	}
    printf("%d\n",y);
}

总体代码如下:

//文件名:number.CPP  
//作者:Linx-huo 
//完成日期:2017.3.22  
//主要功能:计算两个数的最大公约数  
#include <stdio.h>
//穷举法
void exhaustion()
{
    int x,y,t;
    scanf("%d%d",&x,&y);
    if(x<y)
	{
      t=x;
      x=y;
      y=t;
	}
    for(t=y;x%t||y%t;t--);
    printf("%d\n",t);
}
//碾转相除法
void divide()
{
    int x,y,r;
    scanf("%d%d",&x,&y);
    r=x%y;
    while(r)
	{
      x=y;
      y=r;
      r=x%y;
	}
    printf("%d\n",y);
}
//相减法
void subtract()
{
    int x,y;
    scanf("%d%d",&x,&y);
    while(x!=y)
	{
	  while(x>y)
	  {
		x=x-y;
	  }
	  while(x<y)
	  {
		y=y-x;
	  }
	  printf("%d\n",x);
	}
}
void main()
{  
    int choose = 0;    
	printf("   ------------------\n");
	printf("   1.穷举法\n");
	printf("   2.辗转相除法\n");
	printf("   3.相减法\n");
	printf("   4.退出本菜单\n");
	printf("   ------------------\n");
	while (1)
	{
		printf(" \n请输入使用方法编号:");
		scanf("%d",&choose);	
	    switch (choose)
		{
			 case 1:
			{
				 exhaustion();
				 break;
			 }
			case 2:
			 {
			 	divide();    
			    break; 
			 }
			case 3:
			 {
			 	subtract();    
			    break;
			 }
			case 4:
			 {
				return;
			 }
			default:
			{
				printf("请在1-4之间选择\n");
			}
		}
	}
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值