1020: 两重for循环2(完美数)
时间限制: 1 Sec 内存限制: 128 MB
题目描述
【题意】
什么是完美数?一个数的所有真约数的和等于自己就是完美数。
比如:
6的真约数有1、2、3,且这些真约数加起来1+2+3等于6;
又比如:28
28的真约数有1、2、4、7、14,它们加起来还是等于28。
【输入格式】
输入两个整数x和y(1<=x<=y<=10000)。
【输出格式】
输出x~y(包含x和y)的所有完美数。一行一个,从小到大。
【样例输入】
1 100
【样例输出】
6
28
先枚举每一个数,再枚举该数的真约数(小于该数)在判断加起来之和为自己,如果是则输出。
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int x,y;
scanf("%d%d",&x,&y);
for(int i=x;i<=y;i++){
int s=0;
for (int j=1;j<i;j++){
if (i%j==0){
s+=j;
}
}
if (s==i) printf("%d\n",s);
}
return 0;
}