输入两个正整数,求其最大公约数和最小公倍数。
输入格式
每行输入两个正整数 a,b(1≤a,b≤10^4)。
输出格式
输出两行,分别是 a,b的最大公约数和最小公倍数。
样例输入
2 3
样例输出
1
6
问题链接:JSK-391 公约公倍
问题描述:(略)
问题分析:
这是一个数论问题,计算最大公约数是用欧几里德算法实现的,而且是递归实现。最小公倍数则根据数论中的公式进行计算。
程序说明:(略)
参考链接:(略)
题记:
数论问题是常见的程序设计问题。
功能封装到函数。
AC的C语言程序如下:
/* JSK-391 公约公倍 */
#include <stdio.h>
int gcd(int m, int n)
{
return n == 0 ? m : gcd(n, m % n);
}
int lcm(int m, int n)
{
return m / gcd(m, n) * n ;
}
int main(void)
{
int a, b;
while(~scanf("%d%d", &a, &b))
printf("%d\n%d\n", gcd(a, b), lcm(a, b));
return 0;
}
原文地址:https://www.cnblogs.com/tigerisland45/p/9740687.html
时间: 2024-10-17 00:10:10