两个数的最大公约数该怎样去找?(辗转相除法、辗转相减法、直接寻找法)

●三种求最大公约数方法
 int GreComdiv(int a,int b)    //辗转相除法
 {
     while(a!=0)
	 {	
	        if(a<b)    //使a大于b
 	    {
 	 	    int temp=a;
 		    a=b;
 		    b=temp;
	    }
	 	a=a%b;        //不断地求余,直到a==0
	  }
	 return b;
 }

int GreComdiv(int a,int b)      //辗转相减法
 {
	 while(a!=b)
    {
	        if(a<b)      //使a大于b
 	    {
 		    int temp=a;
 	     	a=b;
 		    b=temp;
	    }
	    a=a-b;	        //不断地相减,直到相等
	}
 	return a;
 }


int GreComdiv(int a,int b)   //直接寻找法
 {
 	int i=0;
 	int n=0;
 	for(i=1;i<=a;i++)
 	{
        //从小到大找到既能整除a又能整除b的i赋值给n
 		   if((a%i==0)&&(b%i==0))
 		{
 			n=i;
 		}
 	}
	return n;
 }

 int main()
 {
 	int a;
 	int b;
 	int n=0;
 	printf("请输入两个数:");
 	scanf("%d %d",&a,&b);
    n=GreComdiv(a,b);
    printf("%d和%d的最大公约数是:%d",a,b,n);
 	return 0;
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值