从键盘任意输入两个整数m和n,编程判断m和n是否是亲密数。若是亲密数,则输出“Yes!”,否则输出“No!” 程序运行示例1 Input m, n: 220,284↙ Yes! 程序运行示例2 Input m, n: 224,280↙ No! 输入格式: 输入提示信息:"Input m, n:\n" 输入格式: "%d,%d" 输出格式: 输出提示信息: "Yes!\n" "No!\n" 输入样例: 在这里给出一组输入。例如: 220,284 输出样例: 在这里给出相应的输出。例如: Input
时间: 2024-03-18 07:41:18 浏览: 23
好的,下面是一个简单的 Python 代码实现:
```python
def get_divisors(num):
"""
获取一个数的所有真因数
"""
divisors = [1]
for i in range(2, num):
if num % i == 0:
divisors.append(i)
return divisors
m, n = map(int, input("Input m, n:\n").split(","))
divisors_m = get_divisors(m)
divisors_n = get_divisors(n)
if sum(divisors_m) == n and sum(divisors_n) == m:
print("Yes!")
else:
print("No!")
```
首先,我们定义了一个 `get_divisors` 函数,用于获取一个数的所有真因数。然后,我们从键盘输入两个整数 `m` 和 `n`,并分别获取它们的所有真因数。如果 `m` 的所有真因数之和等于 `n`,且 `n` 的所有真因数之和等于 `m`,则说明这两个数是亲密数,输出 "Yes!",否则输出 "No!"。
注意:这里使用了 `map` 函数和 `split` 方法将输入的字符串转换为整数。如果输入的格式不正确,程序会出错。
相关问题
从键盘任意输入两个整数m和n,编程判断m和n是否是亲密数。若是亲密数,则输出“Yes!”,否则输出“No!”
好的,我来为你编写一个Python代码来判断输入的两个整数是否是亲密数:
```python
def get_divisors(num):
"""
获取一个数的所有真因数
"""
divisors = [1]
for i in range(2, num):
if num % i == 0:
divisors.append(i)
return divisors
m = int(input("请输入第一个整数m:"))
n = int(input("请输入第二个整数n:"))
divisors_m = get_divisors(m)
divisors_n = get_divisors(n)
if sum(divisors_m) == n and sum(divisors_n) == m:
print("Yes!")
else:
print("No!")
```
首先,我们定义了一个 `get_divisors` 函数,用于获取一个数的所有真因数。然后,我们从键盘输入两个整数 `m` 和 `n`,并分别获取它们的所有真因数。如果 `m` 的所有真因数之和等于 `n`,且 `n` 的所有真因数之和等于 `m`,则说明这两个数是亲密数,输出 "Yes!",否则输出 "No!"。
注意:这里只是一个简单的判断亲密数的方法,如果输入的数过大,计算所有真因数可能会很耗时。实际应用中,需要根据具体情况优化算法。
c++从键盘任意输入两个整数m和n,编程判断m和n是否是亲密数。若是亲密数,则输出“Yes!”,否则输出“No!”
好的,下面是你需要的 C++ 代码,和之前 Python 版本的实现逻辑是一样的:
```c++
#include <iostream>
#include <vector>
using namespace std;
vector<int> get_divisors(int num) {
/*
* 获取一个数的所有真因数
*/
vector<int> divisors = {1};
for (int i = 2; i < num; i++) {
if (num % i == 0) {
divisors.push_back(i);
}
}
return divisors;
}
int main() {
int m, n;
cout << "请输入第一个整数m:";
cin >> m;
cout << "请输入第二个整数n:";
cin >> n;
vector<int> divisors_m = get_divisors(m);
vector<int> divisors_n = get_divisors(n);
if (accumulate(divisors_m.begin(), divisors_m.end(), 0) == n && accumulate(divisors_n.begin(), divisors_n.end(), 0) == m) {
cout << "Yes!" << endl;
} else {
cout << "No!" << endl;
}
return 0;
}
```
这里同样定义了一个 `get_divisors` 函数,用于获取一个数的所有真因数。然后从键盘输入两个整数 `m` 和 `n`,并分别获取它们的所有真因数。如果 `m` 的所有真因数之和等于 `n`,且 `n` 的所有真因数之和等于 `m`,则说明这两个数是亲密数,输出 "Yes!",否则输出 "No!"。
注意:在这个 C++ 版本的实现中,我使用了 `accumulate` 函数来计算向量中所有元素的和。