写一个c++代码,解决下列问题:从键盘输入两个 2 位正整数,判断每个数是否为素数,求每个数的因子之和,以及它们 的最大公约数、最小公倍数。
时间: 2023-09-14 17:08:13 浏览: 183
下面是一个解决该问题的C++代码,其中包含了求素数、因子之和、最大公约数和最小公倍数的函数。
```c++
#include <iostream>
using namespace std;
// 判断素数函数
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
// 计算因子之和函数
int sumFactors(int n) {
int sum = 1;
for (int i = 2; i <= n; i++) {
if (n % i == 0) {
sum += i;
}
}
return sum;
}
// 计算最大公约数函数
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// 计算最小公倍数函数
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int main() {
int a, b;
cout << "请输入两个2位正整数:";
cin >> a >> b;
// 判断并输出a是否为素数
if (isPrime(a)) {
cout << a << "是素数" << endl;
} else {
cout << a << "不是素数" << endl;
}
// 计算并输出a的因子之和
cout << a << "的因子之和为:" << sumFactors(a) << endl;
// 判断并输出b是否为素数
if (isPrime(b)) {
cout << b << "是素数" << endl;
} else {
cout << b << "不是素数" << endl;
}
// 计算并输出b的因子之和
cout << b << "的因子之和为:" << sumFactors(b) << endl;
// 计算并输出a和b的最大公约数
cout << a << "和" << b << "的最大公约数为:" << gcd(a, b) << endl;
// 计算并输出a和b的最小公倍数
cout << a << "和" << b << "的最小公倍数为:" << lcm(a, b) << endl;
return 0;
}
```
注意,该代码只能判断和计算2位正整数的素数、因子之和、最大公约数和最小公倍数。如果输入的数不符合条件,程序可能会出现错误。
阅读全文