只计算一遍500000以内的个数也容易超时的可能原因(自负的我认为第二种可能性更大): 算法的时间复杂度太大 题目有点问题,说明实际测试的数应该明显小于500000.实际只有以下4个数:6 28 296 8128 暴力破解也OK #include <iostream> #include <cmath> using namespace std; bool isPerf(int n) { int sum = 1; int t = sqrt(n); for(int i = 2; i <= t; i++){ if(n%i ==...