#include<stdio.h>
int main()
{
//最大公约数
double a,b;
int c;
int bei,yue;
scanf("%lf %lf",&a,&b);
if(a>b) //找到最小的数,可能是最大公约数 ↓
{
yue=b;bei=a;
}
else
{
yue=a;bei=b;
}
for(c=yue;c>0&&c<=yue;c--) //在1到最小数之间找到最大公约数
{
if(int(a/c)==a/c&&int(b/c)==b/c) // 判断某个数是不是公约数(是否能整除) ,且输出公约数
{
printf("最大公约数=%d\n",c);
break;
}
}
//最小公倍数
int d,e; //用作循环
int f=yue; // 储存最初的yue
int h=bei; // 储存最初的bei
for(d=1;;d++,bei=h*d) //(外层循环) bei是初始最大的数(可能直接是小公倍数),当内层找不到公倍数,则将bei翻倍(bei=h*d),再进去进行内层循环 。
{
for(e=1;yue<=bei;e++) //(内层循环) yue是最小的数 从1开始乘,直至找到公倍数
{
yue=f*e;
if(yue==bei)
{
printf("最小公倍数=%d",yue);
break; //找到公倍数后,利用break退出内层循环
}
}
if(yue==bei) //找到公倍数后,利用break退出外层循环
{
break;
}
}
}
最小公倍数和最小公约数
最新推荐文章于 2021-07-30 10:27:17 发布