cpp题目描述任何一个自然数的约数中都有1和它本身我们把小于它本身的因数叫做这个自然数的真约数。 如6的所有真约数是1、2、3而且6=1+2+3。像这样一个数所有真约数的和正好等于这个数通常把这个数叫做完美数。 古希腊人非常重视完美数。毕达哥拉斯发现它之后人们就开始了对完美数的研究。 现在要求输出所有在m和n范围内的完美数。输入格式输入只有一行是两个整数2=m=n=32767中间用空格隔开。输出格
#include
// 判断一个数是否是完美数 bool isPerfect(int num) { int sum = 1; // 1是所有数的真约数,因此先加上1 for (int i = 2; i * i <= num; i++) { if (num % i == 0) { sum += i; if (i * i != num) { sum += num / i; } } } if (sum == num) { return true; } else { return false; } }
int main() { int m, n; cin >> m >> n;
vector<int> perfectNums;
// 遍历范围内的每个数,判断是否是完美数
for (int i = m; i <= n; i++) {
if (isPerfect(i)) {
perfectNums.push_back(i);
}
}
// 输出完美数
for (int i = 0; i < perfectNums.size(); i++) {
cout << perfectNums[i] << " ";
}
cout << endl;
return 0;
原文地址: http://www.cveoy.top/t/topic/iVkS 著作权归作者所有。请勿转载和采集!