完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。s
输入n,请输出n以内(含n)完全数的个数。计算范围, 0 < n <= 500000
本题输入含有多组样例。
这个题的话,我觉得应该是有什么简单一些的方法的,但是我是直接暴力去测试的,貌似这样的话也能解出来,而且不会超时,这个题后面有空的话我会再去刷一下,循环应该还可以再去控制次数的。
#include<stdio.h>
using namespace std;
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int count=0;
for(int num=1;num<=n;num++){
int sum=0,i;
for(i=1;i<num;i++){
if(num%i==0){
sum+=i;
}
}
if(sum==num){
count++;
}
}
printf("%d\n",count);
}
return 0;
}