用户输入正整数n表示希望输出第n对亲密对数(按照数值递增方式排列亲密对数)。例如,如果用户输入"1",程序输出"220 284"表示:第1对亲密对数是220和284(先输出值较小的那个数,然后一个空格,再输出值较大的那个数)。C++代码实现
时间: 2024-02-24 10:55:57 浏览: 29
以下是C++代码实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 计算一个数的所有因子之和
int sum_of_factors(int n) {
int sum = 1;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
sum += i;
if (i * i != n) {
sum += n / i;
}
}
}
return sum;
}
int main() {
int n;
cin >> n;
vector<int> pairs; // 存储亲密对数
for (int i = 1; i <= 100000; i++) {
int j = sum_of_factors(i);
if (j > i && sum_of_factors(j) == i) { // 如果是亲密对数
pairs.push_back(i);
pairs.push_back(j);
}
}
// 输出第n对亲密对数
cout << pairs[(n - 1) * 2] << " " << pairs[(n - 1) * 2 + 1] << endl;
return 0;
}
```
这个程序中,我们先计算出1到100000中的每个数的因子之和,然后判断它是否和另一个数的因子之和相等,并且它们不相等。如果是,那么这两个数就是亲密对数。我们将所有的亲密对数存储在一个vector中,最后输出第n对亲密对数。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)