我怀疑,数据可能太极端了,缺乏中间数据。
我写了这样一个会 TLE 的错解,过了:
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
int num = 0, factor1 = 0, factor2 = 0;
cin >> num;
factor1 = num / 2;
factor2 = ceil(sqrt(num));
do
{
if (num % factor1 == 0)
{
cout << factor1 << endl;
break;
}
else if (num % factor2 == 0)
{
cout << factor2 << endl;
break;
}
--factor1;
++factor2;
} while (factor1 >= 2 && factor2 < num);
return 0;
}