// 优化一下:函数perfect里面的for循环只遍历到 n/2。 #include <iostream> using namespace std; bool perfect(int n){ int sum = 0; for(int i = 1; i <= n/2; ++i){ if(n % i == 0){ sum += i; } } return n == sum; } int main() { int n; cin >> n; int cnt = 0; for(int i = 1; i <= n; ++i){ if(perfect(i)){ cnt++; } } cout << cnt << endl; return 0; } // 64 位输出请用 printf("%lld")