问题描述
随机输入两个数,求其最大公约数
代码1(枚举)
#include<stdio.h>
int main ()
{
int a, b;
scanf("%d %d", &a, &b);
int min;
if (a<b){
min = a;
}else{
min = b;
}
int ret = 0;
int i;
for ( i=1; i<=min; i++ ){
if (a%i == 0){
if (b%i == 0){
ret = i;
}
}
}
printf("%d和%d的最大公约数是%d\n", a, b, ret);
return 0;
}
运行结果
代码2(辗转相除法)
/*如果b等于0,计算结束,a就是最大公约数;
否则,计算a除以b的余数,让a等于b,b等于余数;
回到第一步。
a b t
12 18 12
18 12 6
12 6 0
6 0 */
#include<stdio.h>
int main ()
{
int a,b;
int t;
scanf("%d %d", &a, &b);
while (b!=0){
t = a%b;
a=b;
b=t;
}
printf("ret=%d\n", a);
return 0;
}
运行结果