XDOJ-最大公约数-31

来源:

西安电子科技大学XDOJ在线C语言编程练习题31,

问题描述:

求两个数的最大公约数

思路:

短除法

代码实现:

#include<stdio.h>
int main(){
    int a,b,t;
    scanf("%d %d",&a,&b);
    while(b!=0){
         t = a % b;
         a = b;
         b = t;
    }
    printf("%d",a);
    return 0;
}

### 使用Python计算最大公约数和最小公倍数 #### 定义概念 最大公约数(Greatest Common Divisor, GCD),指的是能够同时整除几个给定正整数的最大那个正整数。而最小公倍数(Least Common Multiple, LCM)则是指能被这些整数共同整除的最小的那个正整数。 #### 利用内置库`math` 为了简化编程工作量并提高效率,在Python中可以直接调用标准库中的`math.gcd()`来获取两个数值之间的最大公约数[^3]: ```python import math def gcd(x, y): return math.gcd(x, y) ``` 对于最小公倍数,则可以根据上述定义以及两者间的关系通过如下方式实现: ```python def lcm(x, y): return abs(x * y) // math.gcd(x, y) ``` 这里采用的是先求得两者的绝对值相乘的结果再去除以它们的最大公约数的方式得到最终结果,这样做的好处是可以处理负数的情况。 如果想要一次性获得多于两个数字间的最大公约数或最小公倍数,可以通过循环迭代的方法逐步累积计算得出。 #### 自定义算法实现 当然也可以不依赖任何外部库来自行编写函数完成相同的功能。欧几里得算法是一种经典的用于寻找两个自然数的最大公约数的有效方法之一。基于此原理可写出如下代码片段用来代替`math.gcd()`功能: ```python def euclidean_gcd(a, b): while(b != 0): temp = a % b a = b b = temp return a ``` 而对于LCM部分依旧沿用之前提到过的公式进行转换即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值