C语言最大公约数和最小公倍数
我的思路:
公倍数:求出最大值,看是否能取余最小值,失败则不断翻倍,直到取余成功。
公约数:定一个数由2开始自增,两者同时取余,成功则返回最小公约数。
#include<stdio.h>
int main()
{
int a, b, max, min, x, y=2;
printf("请输入两个整数:");
scanf("%d %d",&a,&b);
(a > b)?(max=a,min=b):(max=b,min=a); //求最大值和最小值
x = max; //公倍数基准,供后续翻倍
while(1)
{
if(max % min == 0) //取余成功
{
printf("最小公倍数为:%d\n",max);
break;
}
else //取余失败时,最大值增加一个基准数,继续取余
max += x;
}
while(1)
{
if(max % y == 0 && min % y == 0) //两者都取余一个数,同时成功则为最小公约数
{
printf("最小公约数为:%d\n",y);
break;
}
y++;
}
return 0;
}