PTA最大公约数和最小公倍
时间: 2024-12-27 19:14:33 浏览: 11
### 关于PTA平台上的最大公约数和最小公倍数练习题
#### 使用辗转相除法求解最大公约数
对于给定的一行中的两个正整数 \( n \) 和 \( m \),可以利用“辗转相除法”来计算这两个数的最大公约数 (GCD)[^1]。此方法通过重复执行除法操作直到余数为零,此时最后的非零除数即为所求数字。
```cpp
#include <iostream>
using namespace std;
int gcd(int a, int b){
while(b != 0){
int temp = b;
b = a % b;
a = temp;
}
return a; // 返回最大公约数
}
int main(){
int n, m;
cin >> n >> m;
cout << "The GCD of " << n << " and " << m << " is: " << gcd(n,m);
}
```
#### 计算最小公倍数的方法
一旦获得了两数的最大公约数,就可以很容易地得到它们之间的最小公倍数(LCM)。因为存在这样的关系:\( LCM(a,b)=\frac{|a*b|}{GCD(a,b)} \)。这里给出一段C++代码用于实现这一功能:
```cpp
#include <iostream>
using namespace std;
// 前面定义过的gcd函数...
long long lcm(long long a,long long b,int g){
return abs((a / g)*b); // 防止溢出先做一次除法再乘以另一个数
}
int main(){
int n, m;
cin >> n >> m;
int greatestCommonDivisor = gcd(n,m);
cout << "The LCM of " << n << " and " << m << " is: " << lcm(n,m,greatestCommonDivisor);
}
```
阅读全文