1、通过对集合的掌握,求任意两个集合的差运算()和对称差运算()。 2、求任意两个集合的笛卡尔积,即。 3、给定两个正整数a和b,求这两个正整数的最大公约数和最小公倍数 用c++实现
时间: 2024-12-28 08:34:46 浏览: 8
1. 在C++中,求两个集合的差运算是通过集合的减法操作(-)实现的,它返回的是第一个集合中不在第二个集合中的元素构成的新集合。例如:
```cpp
#include <set>
std::set<int> setA = {1, 2, 3, 4};
std::set<int> setB = {3, 4, 5};
std::set<int> diff = setA - setB; // {1, 2}
```
对称差运算(|),则是同时包含两个集合中特有的元素,既不属于第一个集合也不属于第二个集合的部分。可以先取并集再取差:
```cpp
std::set<int> symmetricDiff = (setA | setB) - (setA & setB); // 如果setA = {1, 2, 3}, setB = {2, 4, 6}, 结果为{1, 3, 4, 6}
```
2. 要求两个集合的笛卡尔积,可以使用`std::vector`的嵌套`for`循环遍历每个元素的所有组合:
```cpp
std::vector<std::pair<int, int>> cartesianProduct(std::vector<int> a, std::vector<int> b) {
std::vector<std::pair<int, int>> result;
for (int i : a) {
for (int j : b) {
result.push_back({i, j});
}
}
return result;
}
```
3. 对于两个正整数a和b的最大公约数(GCD),可以使用欧几里得算法(辗转相除法):
```cpp
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
// 最小公倍数(LCM)可以通过公式 LCM(a, b) = |a * b| / GCD(a, b) 计算:
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
```
现在你可以直接使用这些函数来处理集合差、对称差、笛卡尔积和最大公约数/最小公倍数了。
阅读全文