【发布时间】:2014-07-31 14:28:17
【问题描述】:
我正在尝试这个,但是在输入>10000 这个循环 id 需要更多时间。
有什么方法可以优化这个时间复杂度小于 N 或 (logn) 的方法吗?
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
int n = 10001;
for (int i = 1; i < n; i++) {
if (n % i == 0) {
cout << i;
}
}
return 0;
}
【问题讨论】:
-
你可以使用Pollard Rho算法。它真的很快而且实施起来也不难。使用主要因素,您可以生成除数。
-
您需要执行一次还是多次?
-
如果用户输入 300 那么我必须执行 600 次..两次