/*
*Copyright(c) 2016,烟台大学计算机学院
*All rights reserved.
*文件名称:test2.cpp
*作 者:刘金石
*完成日期:2016年3月17日
*版本 号:v1.0
*问题描述:分别求两个整数的最大公约数和最小公倍数
*输入描述:输入两个整数。
*输出描述:输出结果。
*/
#include<iostream>
using namespace std;
int main()
{
int lcm(int x,int y);
int gcd(int x,int y);
int a,b,f,g,i=0;
cout<<"请输入两个整数:"<<endl;
while(cin>>a>>b)
{
f=lcm(a,b);
g=gcd(a,b);
cout<<"最大公约数是"<<g<<endl;
cout<<"最小公倍数是"<<f<<endl;
i++;
if(i==51)
break;
}
return 0;
}
int lcm(int x,int y)//求最小公倍数
{
int t,i;
if(x<y)
{
t=x;
x=y;
y=t;
}
// 25 15
for(i=1;i<=y;i++)
{
if(!((x*i)%y))
{
return x*i;
}
}
}
int gcd(int x,int y)//求最大公约数
{
int t;
if(x<y)
{
t=x;
x=y;
y=t;
}
while(y>0)
{
t=x%y;
x=y;
y=t;
}
return x;
}
运行结果:
(2)如何在上面的程序基础上,增加gcds函数的声明和定义,实现求4个数的最大公约数?
#include<iostream>
using namespace std;
int gcd(int x,int y);
int gcds(int ,int ,int ,int );
int main()
{
int a,b,c,d,g;
cin>>a>>b>>c>>d;
g=gcds(a,b,c,d);
cout<<"最大公约数是"<<g;;
return 0;
}
int gcds(int x,int y,int z,int w)
{
int a,b,c;
a=gcd(x,y);
b=gcd(z,w);
c=gcd(a,b);
return c;
}
int gcd(int x,int y)//求最大公约数
{
int t;
if(x<y)
{
t=x;
x=y;
y=t;
}
while(y>0)
{
t=x%y;
x=y;
y=t;
}
return x;
}
运行结果: