1、穷举法
#include <stdio.h>
int main()
{
int a,b,i;
scanf("%d,%d",&a,&b);
for(i=(a*b);i>=1;i--) //不能用for(n=1;n<=(a*b);n++),因为1符合条件,然后就会跳出,必须从大的数往小的开始找
{
if(a%i==0&&b%i==0)
{
printf("a,b的最大公约数是%d",i);
break;
}
}
}
2、辗转相除法 + 调用
#include <stdio.h>
int cgd(int a,int b)
{
int i;
scanf("%d,%d",&a,&b);
do
{
i=a%b;
a=b;
b=i;
}while(i=0);
return a; //反复相除取余,直到整除,最大公约数就是上一次循环的除数b,也就是本次循环后的a
}
3、辗转相除法 + 调用 + 递归
#include <stdio.h>
int gcd(int a,int b)
{
if(a%b==0)
{
return b;//a,b直接能整除,那么最大公约数就是除数b
}
else
{
return gcd(b,a%b);//反复取余,直到能整除 ,返回的是一次循环的除数b
}
}