几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。
几个自然数公有的倍数,叫做这几个数的公倍数,其中最小的一个自然数,叫做这几个数的最小公倍数。
在解有关最大公约数、最小公倍数的问题时,常用到以下结论:
(1)如果两个自然数是互质数,那么它们的最大公约数是1,最小公倍数是这两个数的乘积。
例如8和9,它们是互质数,所以(8,9)=1,[8,9]=72。
(2)如果两个自然数中,较大数是较小数的倍数,那么较小数就是这两个数的最大公约数,较大数就是这两个数的最小公倍数。
例如18与3,18÷3=6,所以(18,3)=3,[18,3]=18。
(3)两个整数分别除以它们的最大公约数,所得的商是互质数。
例如8和14分别除以它们的最大公约数2,所得的商分别为4和7,那么4和7是互质数。
(4)两个自然数的最大公约数与它们的最小公倍数的乘积等于这两个数的乘积。
例如12和16,(12,16)=4,[12,16]=48,有4×48=12×16,即(12,16)× [12,16]=12×16。
#include<stdio.h>
int main()
{
int a,b,c[1000],q,n,i,A[1000],B[1000],s,d,e;
scanf("%d %d",&a,&b);
n=1;
if(a>=b)
s=b;
else
s=a;
q=s;
for(s;s>=1;s--)
{
if(a%s==0&&b%s==0)
{
printf("%d",s);
printf(" ");
break;
}
}
s=q;
for(s;s>=1;s--)
{
if(a%s==0&&b%s==0)
{
c[n]=s;
a=a/s;
b=b/s;
A[n]=a;
B[n]=b;
n+=1;
if(s==1)
{
d=1;
for(i=1;i<n;i++)
{
d*=c[i];
}
e=d*A[n-1]*B[n-1];
printf("%d",e);
break;
}
else
s=q;
}
}
return 0;
}