编程亲密数怎么写

时间:2025-01-25 11:44:01 网络游戏

亲密数是指两个不同的整数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} 不是亲密数")

```

解释

sumOfDivisors函数:

计算一个数的真因数和,包括1但不包括该数本身。

areAmicable函数:

检测两个数是否是亲密数,即一个数的真因数和等于另一个数,且另一个数的真因数和等于第一个数。

主函数:

从用户输入获取两个数,并调用areAmicable函数判断它们是否是亲密数,然后输出结果。

你可以选择使用C++或Python编写上述代码,根据你的编程环境和需求进行选择。