输入两个正整数m和n,求其最大公约数和最小公倍数。
样例输入:49 14
样例输出:7
暴力方法1:
#include <stdio.h>
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF)
{
int buf[1000]={0};
int i,siz_e=0;
int maxs=0;
if( (a==0&&b!=0)||(a!=0&&b==0))
{
printf("%d\n",a==0?b:a);
continue;
}
else if(a==0&&b==0)
{
printf("the num is not exit\n");
continue;
}
else
{
for(i=1;i<=a&&i<=b;i++)
{
if(a%i==0&&b%i==0) buf[siz_e++]=i;
}
}
for(i=0;buf[i]!=0;i++)
{
if(maxs<buf[i]) maxs=buf[i];
}
printf("%d\n",maxs);
}
return 0;
}
欧几里得算法:(辗转相除法)
#include <stdio.h>
int gcd(int a,int b)
{
if(b==0) return a;
else return gcd(b,a%b);
}
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=0)
{
printf("%d\n",gcd(a,b));
}
return 0;
}