C++求质数因子,总算不超时了!

不知道各位的情况如何,我在题解区看到的答案都遭遇了超时的问题。因此本题解采用了引入“根号”来判断质数。代码如下:

#include
using namespace std;

int main() 
{
    long n, old_n=0; 
    cin >> n;
    while (n != 1)
    {
        for (int i = 2; i <=sqrt(n); i++) //不要忽视“=”符号,很重要!
        {
            old_n = n;
            while (n % i == 0) {
                cout << i << " ";
                n /= i;
            }
            if (old_n != n)
                break;
        }
        if (old_n == n) 
        {
            cout << n << ' ';
            break;
        }
    }
return 0;
}