#include <stdio.h>
int main(){
int a;
int b;
scanf("%d %d",&a,&b);
while (b!=0)
{
int n = a%b;
a = b;
b = n;
}
printf("gcd=%d\n",a);
return 0;
}
- 思路
输入两个数:a与b
如果b等于0 计算结束 a就是最大公约数
否则:计算b除以a的余数,让a等于b b等于那个余数 回到第上一步
- 枚举法
#include <stdio.h>
int main(){
int a;
int b;
int min;
scanf("%d %d",&a,&b);
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\n",ret);
return 0;
}
- 思路:
循环次数为:较小数字的值
两个数字都能整除ret 则ret为公约数 又要不断循环 才能找到最大公约数 一个一个循环
缺点:耗时