辗转相除法
#include<stdio.h>
int main()
{
int i,j,k,m,n;
printf("请输入两个整数:");
scanf("%d%d",&i,&j);
m=i;n=j;
while(k!=0)
{
k=i%j; //比如12%18的下一次循环就是18%12,所以程序不用比较两个数的大小
i=j;
j=k;
}
printf("最大公约数是%d\n",i);
printf("最小公倍数是%d\n",m*n/i);
return 0;
}
辗转相减法
#include<stdio.h>
int main()
{
int i,j,m,n;
printf("请输入两个整数:");
scanf("%d%d",&i,&j);
m=i;n=j;
while(i!=j)
{
if(i>j)
i=i-j;
else
j=j-i;
}
printf("最大公约数是%d\n",i);
printf("最大公倍数是%d\n",m*n/i);
return 0;
}
穷举法
#include<stdio.h>
int main()
{
int a,b,i,t,m,n;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
m=a;n=b;
for(i=1;i<=a;i++)
{
if(a%i==0&&b%i==0)
t=i;
}
printf("最大公约数是%d\n",t);
printf("最大公倍数是%d\n",m*n/t);
return 0;
}