C++代码 求73132175内最大的2个素数. 求57123137和73132175的两个数字的最大公因数和最小公倍数
时间: 2024-09-26 13:09:28 浏览: 43
求最大公约数和最小公倍数_素数_
C++代码可以使用一些数学库函数来帮助我们找到最大素数、计算最大公约数(GCD)和最小公倍数(LCM)。这里是一个简单的示例代码片段,用于解决这两个问题:
```cpp
#include <iostream>
#include <vector>
#include <cmath>
// 判断是否是素数
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0)
return false;
}
return true;
}
// 寻找指定范围内的最大两个素数
std::pair<int, int> findTwoMaxPrimes(int start, int end) {
std::vector<int> primes;
for (int num = start; num <= end; ++num) {
if (isPrime(num))
primes.push_back(num);
}
// 如果找到少于2个素数,返回所有找到的
if (primes.size() < 2)
return {primes[0], primes.empty() ? 0 : primes[1]};
// 否则,返回最大的两个素数
return {primes[primes.size() - 2], primes[primes.size() - 1]};
}
// 计算最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
// 计算最小公倍数
int lcm(int a, int b) {
return abs(a * b) / gcd(a, b);
}
int main() {
int num1 = 57123137;
int num2 = 73132175;
auto maxPrimes = findTwoMaxPrimes(73132175, 73132175); // 因为题目只提到一个范围,这里是相同的
std::cout << "在73132175内找到的最大两个素数是: " << maxPrimes.first << ", " << maxPrimes.second << "\n";
int gcdResult = gcd(num1, num2);
int lcmResult = lcm(num1, num2);
std::cout << "57123137和73132175的最大公约数(GCD): " << gcdResult << "\n";
std::cout << "57123137和73132175的最小公倍数(LCM): " << lcmResult << "\n";
return 0;
}
```
在这个程序中,首先定义了一个`isPrime`函数来判断整数是否是素数。然后通过`findTwoMaxPrimes`函数找出给定范围内最大的两个素数。接着计算`gcd`和`lcm`函数分别用于找出两个数的最大公约数和最小公倍数。
运行这个程序会得到结果。注意,因为题目范围仅限于73132175,所以实际上只会有1个素数(如果有的话),在这里假设只有一个,其他部分展示了如何计算最大公约数和最小公倍数。
阅读全文