完数VS盈数
用到了vector用于存放所有完数和盈数
#include <stdio.h>
#include <vector>
#include <math.h>
using namespace std;
int countsum(int n){
int sum=0;
for(int i=1;i<sqrt(n);++i){
if(0==n%i&&i!=n/i){
sum=sum+i+n/i;
}else if(0==n%i&&i==n/i)
{
sum+=i;
}
}
sum-=n;
return sum;
}
int main(){
vector<int> vec1,vec2;
for(int i=3;i<=60;++i){
if(countsum(i)==i){
vec1.push_back(i);
}
if(countsum(i)>i){
vec2.push_back(i);
}
}
printf("E:");
for(int i=0;i<vec1.size();++i){
printf(" %d",vec1[i]);
}
printf("\nG:");
for(int i=0;i<vec2.size();++i){
printf(" %d",vec2[i]);
}
}
思路也比较简单计算每个数所有的因子再求和减去自身 再与自身的大小进行比较 注意求因子时时间复杂度较低的处理方式
遍历数组最好用迭代器