算法:枚举,数学
复杂度:
解题思路:
所有约数都是成对出现的:如果 是 的约数,那么也是 的约数。
我们可以只枚举较小的约数,然后计算出较大的约数即可。那么需要枚举的范围满足:,则 。因此只需要枚举 次。
C++ 代码:
#include <iostream> using namespace std; int main() { int n; cin >> n; for (int i = 2;; i++) if (n % i == 0) { cout << n / i << endl; break; } return 0; }