穷举法:
#include<stdio.h>
void gcd(int a,int b)
{
int t,m,n;
m=(a>b)?a:b;
n=(a>b)?b:a;
t=n;
for(t=n;t!=-1;t--)
{
if(m%t==0&&n%t==0)
{
printf("最大公约数是%d\n",t); break;
}
}
}
int main()
{
int a,b;
printf("input a,b:");
scanf("%d%d",&a,&b);
gcd(a,b);
return 0;
}
欧几里得算法:
#include<stdio.h>
void gcd(int a,int b)
{
int r;//r为a除以b的余数;
if(a>b&&a%b==0)
printf("%d\n",b);
if(a%b!=0)
{
for(;r!=0;)
{
r=a%b;
a=b;
b=r;
}
printf("%d\n",a);
}
}
int main()
{
int a,b;
printf("input a,b:");
scanf("%d%d",&a,&b);
gcd(a,b);
return 0;
}