题面
标题:
完数
类别:
时间限制:
2 S
内存限制:
10000 Kb
问题描述:
请写一个程序,给出指定整数范围[a,b]内的所有完数,0 < a < b < 10000。
一个数如果恰好等于除它本身外的所有因子之和,这个数就称为"完数"。
例如6是完数,因为6=1+2+3
输入说明
输入为两个整数a和b,a和b之间用空格分隔
输出说明
输出[a,b]内的所有完数,每个数字占一行
输入样例
1 10
输出样例
6
题解
思路:
枚举[a, b]内所有数,
用sum记录每个数的真因子和,与自身比较
相同就是完数并输出(注意输出换行)
#include<iostream>
using namespace std;
int main()
{
int a, b;
scanf("%d %d", &a, &b);
int i, sum=0;
for (i = a; i <= b; i++)
{
for (int j = 1; j < i; j++)
{
if(i % j == 0)
{
sum += j;
}
}
if(sum == i)
printf("%d\n", i);
sum = 0;
}
return 0;
}
date:20240101