亲密数是指两个不同的整数A和B,其中A的全部因子(包括1但不包括A本身)之和等于B,且B的全部因子(包括1但不包括B本身)之和等于A。以下是用C++和Python实现的亲密数检测程序:
C++实现
```cpp
include using namespace std; // 计算一个数的真因数和 int sumOfDivisors(int num) { int sum = 1; // 1 是任何数的真因数 for (int i = 2; i <= num / 2; i++) { if (num % i == 0) sum += i; } return sum; } // 检测是否是亲密数 bool areAmicable(int a, int b) { return (sumOfDivisors(a) == b && sumOfDivisors(b) == a); } int main() { int a, b; cout << "请输入两个数字: "; cin >> a >> b; if (areAmicable(a, b)) { cout<< a << " 和 "<< b << " 是亲密数" << endl; } else { cout<< a << " 和 "<< b << " 不是亲密数" << endl; } return 0; } ``` Python实现 ```python def sum_of_divisors(num): sum = 1 1 是任何数的真因数 for i in range(2, num // 2 + 1): if num % i == 0: sum += i return sum def are_amicable(a, b): return sum_of_divisors(a) == b and sum_of_divisors(b) == a a = int(input("请输入两个数字: ")) b = int(input("请输入两个数字: ")) if are_amicable(a, b): print(f"{a} 和 {b} 是亲密数") else: print(f"{a} 和 {b} 不是亲密数") ``` 解释 计算一个数的真因数和,包括1但不包括该数本身。 检测两个数是否是亲密数,即一个数的真因数和等于另一个数,且另一个数的真因数和等于第一个数。 从用户输入获取两个数,并调用areAmicable函数判断它们是否是亲密数,然后输出结果。 你可以选择使用C++或Python编写上述代码,根据你的编程环境和需求进行选择。sumOfDivisors函数:
areAmicable函数:
主函数: