4.3-1第一个完全数(100分)
题目内容:
输入一个正整数n,求大于n的第一个完全数。所谓完全数是指该数刚好等于它的因子之和(自己本身除外)。例如,6的因子为1,2,3,且6=1+2+3,因此6是一个完全数。
·输入格式:
输入一个正整数n,1<=n<=8000
·输出格式:
输出大于n的,最小的那个完全数
#include <iostream> // 引入输入输出流库,提供cin和cout功能
using namespace std; // 使用标准命名空间,方便直接使用标准库中的标识符
int main() {
long long int n, i, sum; // 定义长整型变量 n(输入的数字),i(用于循环),sum(计算因子和)
cin >> n; // 从标准输入读取一个长整型整数 n
// 从 n+1 开始,查找小于等于 10000 的第一个完全数
for (i = n + 1; i <= 10000; i++) {
sum = 0; // 初始化 sum 为 0,用于存储当前数字 i 的因子和
// 内层循环:计算 i 的因子和
for (int j = 1; j < i; j++) {
if (i % j == 0) { // 如果 j 是 i 的因子(i % j == 0)
sum += j; // 将因子 j 加到 sum 中
}
}
// 判断 sum 是否等于 i,如果是,则 i 是一个完全数
if (sum == i) {
cout << i << endl; // 输出完全数 i
break; // 找到第一个完全数后退出循环
}
}
return 0; // 程序正常结束
}
代码解释
-
变量定义:
long long int n, i, sum;
:定义长整型变量n
(用户输入的数字),i
(用于循环,查找完全数),sum
(存储当前数字因子的和)。
-
读取输入:
cin >> n;
:从标准输入读取一个长整型整数n
,