PTA 编程题 -- 最大公约数和最小公倍数

本博客介绍如何利用欧几里得算法(辗转相除法)解决PTA编程题,求解两个正整数的最大公约数(GCD)和最小公倍数(LCM)。通过示例代码解释算法过程,并提供两种不同的实现方式。此外,还提示读者可在相关小程序中找到更多PTA题目的参考代码。
摘要由CSDN通过智能技术生成

本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:

输入在一行中给出两个正整数M和N(≤1000)。

输出格式:

在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

输入样例:

511 292

输出样例:

73 2044

思路:求最大公约数的方法,目前来说最好的就是辗转相除法,也叫欧几里得算法(Euclidean Algorithm)。

例如,要计算15和24的最大公约数,首先让把较大的数赋值给p,把较小的数赋值给q,p=24,q=15;

然后计算p,q的余数,即r=p%q,显然如果r==0了,q就是能整除p的从而最大公约数就是q。如果r!=0,那么可以推导出p,q的最大公因子一定等于q,r的最大公因子。

于是从新赋值p=q,q=r, 并重复上面的步骤,直到r==0为止,这时的q就是,原p,q的最大公因子。

至于最小公倍数,它显然就是两数乘机除以最大公约数。

代码1:

int main () {
    int M,N,p,q,r;
    scanf("%d %d", &M, &N);
    p = M>N? M:N; // p是较大的
    q = M>N? N:M; // q是较小的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值