您的位置:首页 > 编程语言 > C语言/C++

基本算法—最大公约数和最小公倍数

2017-04-14 19:55 260 查看
#include <stdio.h>
int lcm(int a, int b,int c);
int gcd(int a, int b,int c);
int main()
{
int a,b,c,gys,gbs;

scanf("%d%d%d",&a,&b,&c);

gys=gcd(a,b,c);//最大公约数
gbs=lcm(a,b,c);//最小公倍数
printf("最大公约数:%d\n",gys);
printf("最小公倍数:%d\n",gbs);

return 0;
}

int gcd(int a, int b,int c)//求最大公约数
{
int min,max1,i;
if(a<b)
{
if(a<c)
{
min=a;
}
else
{
min=c;
}
}
else
{
if(b<c)
{
min=b;
}
else
{
min=c;
}
}

for(i=1; i<=min; i++)
{
if(a%i==0&&b%i==0&&c%i==0)
{
max1=i;
}
}
return max1;

}

int lcm(int a,int b,int c)//求最小公倍数
{
int min=1;//最小公倍数初值赋值为1
while(1) //永远成立,无条件循环
{
if(min%a==0&&min%b==0&&min%c==0) //判断是否为最小公倍数
break;//如果满足min分别是a,b,c的倍数,立即跳出
else
min++;//不满足,就+1
}
return min;

}

/*
#include <stdio.h>
int main()
{
int n,m,gys,gbs;
int gcd(int a, int b);
int lcm(int a, int b);
scanf("%d%d",&n,&m);
gys=gcd(n,m);//最大公约数
gbs=lcm(n,m);//最小公倍数
printf("%d %d\n",gys,gbs);
return 0;
}
int gcd(int x,int y)//!!!求最大公约数!!!
{
int r;
while(y>0)
{
r=x%y;
x=y;
y=r;
}
return x;
}

int lcm(int x,int y)
{
return ((x*y)/gcd(x,y));
}
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息