题目描述
如果一个数恰好等于它的所有因子,包括一但不包括自身之和,则称之为完数。例如六的因子为一,二,三且6=1+2+3,因此六是完数。使用for语句编写程序,找出100以内所有的完数及这些完数的和
输出形式
完数1+完数2+…=和值
源代码
#include <iostream>
using namespace std;
int main() {
int sum = 0; // 记录所有完数的和
cout << "100以内的完数有:";
for (int i = 1; i <= 100; i++) { // 遍历100以内的每个数字
int factor_sum = 0; // 记录当前数字i的因子之和
for (int j = 1; j < i; j++) { // 遍历i的每个因子
if (i % j == 0) { // 如果j是i的因子,则将j加入到factor_sum中
factor_sum += j;
}
}
if (factor_sum == i) { // 如果factor_sum等于i,则i是完数
cout << i << " ";
sum += i; // 将i加入到sum中
}
}
cout << endl << "这些完数的和为:" << sum << endl; // 输出结果
return 0;
}
在这个程序中,我们使用两个for循环来遍历100以内的每个数字和每个数字的因子。对于每个数字i,我们先将其所有因子的和记录在变量factor_sum
中。如果factor_sum
等于i,则说明i是完数,我们将i输出到屏幕上,并将其加入到变量sum
中。最后,输出所有完数的和sum
。
需要注意的是,在第二个for循环中,我们只需要遍历到i的前一个数字j(即j<i),因为1也是i的因子,而i本身不是它的因子。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END