链接:https://www.nowcoder.com/questionTerminal/7299c12e6abb437c87ad3e712383ff84
来源:牛客网
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
给定函数count(int n),用于计算n以内(含n)完全数的个数。计算范围, 0 < n <= 500000
返回n以内完全数的个数。 异常情况返回-1
【题目解析】
审题即可
【解题思路】
n每次对数字1~n-1取余数,为0就累加,循环n次,千万记得对于多次累加的变量在后面记得清0,否则会出错;
#include<iostream>
using namespace std;
int count(int n){
int add=0;
int sum=0;
while(n!=0){
for(int i=1;i<n;i++){
if(n%i==0)
sum+=i;
else
continue;
}
if(sum==n)
add++;
n--;
sum=0;
}
if(n==0)
return add;
return -1;
}
int main(){
int num;
int ret=0;
while(cin>>num){
ret=count(num);
cout<<ret<<endl;
}
}