方法一:辗转相除法求最大公因数
#include<stdio.h>
#include<string.h>
int main()
{
long long int m,n,c;
scanf("%lld %lld",&m,&n);
int num1=m;
int num2=n;
if(m>=n)//这个条件语句以及循环是辗转相除法的具体执行
{
c=m%n;
while(m%n!=0)
{
m=n;
n=c;
c=m%n;
}
printf("%d",n,(num1*num2)/n);
}
else
{
c=n%m;
while(n%m!=0)
{
n=m;
m=c;
c=n%m;
}
printf("%lld %lld",m,(num1*num2)/m);//最大公约数用辗转相除法,最小公倍数是倆数乘积比上最大公约数
}
return 0;
}
方法二:
#include<stdio.h>
#include<math.h>
int main()
{
long long int m,n,i,t;
scanf("%lld %lld",&m,&n);
if(m<n)
{
t=m;
m=n;
n=t;
}
for(i=n;i>0;i--)
{
if(m%i==0&&n%i==0)
{
printf("%lld %lld",i,m*n/i);
break;
}
}
return 0;
}
//巧妙地利用循环和最大公约数的特点从而做题,要灵活思考。