两数求最大公约数的三种方法的C语言实现


任意输入两个数,求出二者的最大公约数,以C语言实现。以下是三种方法以及对应思路:

<1>辗转相除法。

定义两个变量存放两个数(a,b),先以冒泡法将较大数存放在在b内,较小数存放于a。

相除法的思路是:

1.b÷a取余

2.判断余数是否为零,若为零,则最大公约数为a;不为零,则进行下一步

3.将a的值赋给b,余数值赋给a。执行第一步。

转换为C语言后,代码如下:

#include 
   
   
    
    
void main()
{
  int a,b;
  int temp;
  printf("请输入两个数,以空格分开:");
  scanf("%d %d",&a,&b);
  if(b
    
    
   
   

<2>相减法

定义两变量a,b,具体思路如下:

1.先判断a,b是否相等,若是,则直接输出a;若否,则执行第二步。

2.判断a是否大于b,若是,则a-b且将此式值赋给a;执行第一步;

                                若不是,则b-a且将此式值赋给b;执行第一步。

3.输出a。

转换为C语言后具体代码如下:

#include
    
    
     
       
void main ( )  
{   
   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);  
     
}  
    
    


<3>穷举法

定义变量a,b,i,具体思路如下:

1.判断ab大小,将较小值赋给i;

2.判断a÷i,b÷i是否都可以整除,若是,输出i;若不是,执行第三步。

3.i--;执行第二步。

4.输出i。

转换为C语言后代码如下:

#include 
    
    
     
     
int main()
{
    int a,b;
    int i;
	printf("请输入两个数,以逗号分隔:\n");
    scanf("%d,%d",&a,&b);
    if(a>b)      /*将a,b中的较小数赋予i*/
		i=b;
	else
		i=a;    
    while( a%i!=0 && b%i!=0 )/*穷举法*/
    i--;
    printf("两数的最大公约数为:%d\n",i);
	return 0;
}
    
    

以上即为使用C语言以三种算法计算两数最大公约数。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值