C++,可读性较高的思路。

#include <bits/stdc++.h>
using namespace std;

int main()
{

    int n;  //待输入的数
    while(cin>>n){
        int count=0;  //计数器
        //遍历从2到n的每一个数,并在下一层for计算是否为完全数
        for(int k=2;k<=n;k++)  
        {
            int sum=1;  //每个数都包含1这个因数
            for(int i=2;i<=k/2;i++) //除以2:根据题干推出的缩小i范围的方法
            {
                if(k%i==0)
                    sum=sum+i;
            }
            if(k==sum)
                count++;
        }
        cout<<count<<endl;
    }
    return 0;
}