<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语言以三种算法计算两数最大公约数。