|
发表于 2023-10-22 10:57:47
|
显示全部楼层
在C++中,我们可以使用欧几里得算法(Euclidean Algorithm)来找到两个数的最大公因数(GCD),然后使用这个GCD来找到这两个数的最小公倍数(LCM)。以下是一个简单的C++程序,它可以找到一组整数的最大公因数和最小公倍数:
- #include <iostream>
- #include <vector>
- using namespace std;
- // Function to find gcd of a and b
- int gcd(int a, int b) {
- if (b == 0)
- return a;
- return gcd(b, a % b);
- }
- // Function to find lcm of a and b
- int lcm(int a, int b) {
- return (a / gcd(a, b)) * b;
- }
- // Function to find gcd and lcm of a vector of numbers
- pair<int, int> findGCDAndLCM(vector<int> numbers) {
- int n = numbers.size();
- int resultGCD = numbers[0];
- int resultLCM = numbers[0];
- for (int i = 1; i < n; i++) {
- resultGCD = gcd(numbers[ i], resultGCD);
- resultLCM = lcm(resultLCM, numbers[ i]);
- }
- return make_pair(resultGCD, resultLCM);
- }
- int main() {
- vector<int> numbers = {2, 7, 3, 9, 4};
- pair<int, int> result = findGCDAndLCM(numbers);
- cout << "GCD: " << result.first << endl;
- cout << "LCM: " << result.second << endl;
- return 0;
- }
复制代码
这个程序首先定义了两个函数,一个用于计算两个数的最大公因数,另一个用于计算两个数的最小公倍数。然后,它定义了一个函数,该函数接受一个整数向量,并使用前面定义的函数来找到这个向量中所有数的最大公因数和最小公倍数。最后,主函数创建了一个整数向量,调用了findGCDAndLCM函数,并打印出结果。
请注意,这个程序假设输入的整数向量至少包含一个元素,并且所有的元素都是正整数。如果这些假设不成立,你可能需要对程序进行一些修改。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案 |
|