Copyright (c) 2016,
烟台大学计算机与控制学院 All ringts reserved.
文件名称:OJ总结<5>-求两个整数的最大公约数和最小公倍数
作 者:王兴振
完成日期:2016年11月14日
版 本 号:未知
题目描述:
写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个
整数由键盘输入。
输 入:
两个数
输 出:
最大公约数 最小公倍数
样例输入:
6 15
样例输出:
3 30
提 示:
主函数已给定如下,提交时不需要包含下述主函数
/* C代码 */
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;
}
/* C++代码 */
int main()
{
int n,m,gys,gbs;
int gcd(int a, int b);
int lcm(int a, int b);
cin>>n>>m;
gys=gcd(n,m);
gbs=lcm(n,m);
cout<<gys<<" "<<gbs<<endl;
return 0;
}
答 案:
int gcd(int n,int m);
int lcm(int n,int m);
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 n,int m)
{
int t=n,i;
if (t>m)
t=m;
i=t;
for (i=t;i>=1;i--)
{
if (n%i==0 && m%i==0)
break;
}
return i;
}
int lcm(int n,int m)
{
int t=n,i;
if (t<m)
t=m;
i=t;
while (i<=m*n)
{
if (i%n==0 && i%m==0)
break;
i++;
}
return i;
}
总 结:
两个数的求法一样,所以懂一个另一个也就会了。