从键盘任意输入两个整数m和n,编程判断m和n是否是亲密数。若是亲密数,则输出“Yes!”,否则输出“No!”
时间: 2024-03-18 21:41:16 浏览: 33
好的,我来为你编写一个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` 函数来计算向量中所有元素的和。
从键盘输入两个整数m和n,编程求m和n间的所有素数。
以下是Python代码实现:
```python
m = int(input("请输入第一个整数m:"))
n = int(input("请输入第二个整数n:"))
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
for i in range(m, n+1):
if is_prime(i):
print(i, end=" ")
```
首先,我们从键盘输入两个整数m和n,然后定义一个函数is_prime(num)用于判断一个数是否为素数。这个函数的实现方式是:如果这个数小于2,那么它不是素数;否则,我们从2到该数的平方根进行遍历,如果该数能被其中任意一个数整除,那么它不是素数,返回False;否则,它是素数,返回True。
接着,我们使用一个for循环遍历m到n的所有整数,如果该数是素数,那么我们就将其打印出来,最后输出结果。