用辗转相除法求两个正整数的最大公约数
/*
⑴a除以b,余数存于r;
⑵如果r不为0,则将b的值赋给a,r的值赋给b,重复⑴;否则执行⑶
⑶输出a的值,它就是最大公约数。
*/
#include <stdio.h>
#include <conio.h>
int divisor(int,int);
void main()
{
clrscr();
int a,b,d;
scanf("%d,%d",&a,&b);
if (a>b)
d=divisor(a,b);
else
d=divisor(b,a);
printf("a=%d,b=%d\n",a,b);
printf("d=%d",d);
}
int divisor(int a,int b)
{
int r;
do
{
r=a%b;
a=b;
b=r;
}while(r!=0);
return a;
}
⑴a除以b,余数存于r;
⑵如果r不为0,则将b的值赋给a,r的值赋给b,重复⑴;否则执行⑶
⑶输出a的值,它就是最大公约数。
*/
#include <stdio.h>
#include <conio.h>
int divisor(int,int);
void main()
{
clrscr();
int a,b,d;
scanf("%d,%d",&a,&b);
if (a>b)
d=divisor(a,b);
else
d=divisor(b,a);
printf("a=%d,b=%d\n",a,b);
printf("d=%d",d);
}
int divisor(int a,int b)
{
int r;
do
{
r=a%b;
a=b;
b=r;
}while(r!=0);
return a;
}