有人说,求两个整数的最大公约数和最小公倍数的辗转相除法有些难记且不易理解,下面我介绍自己的一种方法。
#include <stdio.h>
int max(int x,int y)
{
int k;
if(x%y==0) return y;
else
{
for(k=y-1;k>0;k--)
{
if(y%k==0) break;
}
return k;
}
}
int min(int x,int y)
{
return x*y/max(x,y);
}
int main()
{
int i,j,t;
if(i<j)
{t=i;i=j;j=t;}
printf("请输入两个正整数:\n");
scanf("%d%d",&i,&j);
printf("最大公约数为:%d\n",max(i,j));
printf("最小公倍数为:%d\n",min(i,j));
return 0;
}
思路大概是这样的:首先确保i>j;其次就是求出最大公因数,利用j为最小,然后j原来的值不断除以j–,直到整除,就可跳出循环,便可求出最大公因数,最后两个正整数相乘除以最大公因数便可得到最小公倍数。
大家觉得这方法如何,若觉得不错,可以点赞支持哦~~
如有更好的方法,可以在下方评论区分享嗷~