一个数如果恰好等于它的因子之和,这个数就成为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编好程序,找出1000之内的所有完数,并按下面格式输出其因子: 6, its factors are 1,2,3。 使用c++
时间: 2024-10-20 07:09:53 浏览: 42
在C++中,你可以编写一个函数来检查一个数是否为完数,然后遍历1到1000之间的所有整数,对于每个数,计算其因子并判断是否满足完数条件。以下是相应的代码示例:
```cpp
#include <iostream>
#include <vector>
bool isPerfectNumber(int num) {
std::vector<int> factors;
for (int i = 1; i * i <= num; ++i) {
if (num % i == 0) {
factors.push_back(i);
if (i != num / i) { // 如果不是本身的平方根,则添加另一个因子
factors.push_back(num / i);
}
}
}
int sumOfFactors = 0;
for (int factor : factors) {
sumOfFactors += factor;
}
return num == sumOfFactors && factors.size() > 1; // 保证至少有两个因子
}
void printPerfectNumbersAndFactors(int limit) {
for (int num = 2; num <= limit; ++num) {
if (isPerfectNumber(num)) {
std::cout << num << ", its factors are ";
for (int factor : factors) {
std::cout << factor << " ";
}
std::cout << std::endl;
}
}
}
int main() {
printPerfectNumbersAndFactors(1000);
return 0;
}
```
当你运行这个程序,它将打印出1000以内所有的完数及其因子。
阅读全文