gpt4 book ai didi

c++ - 如何找到时间复杂度小于 N 的给定数字 N 的所有因子?

转载 作者:行者123 更新时间:2023-11-27 23:03:55 25 4
gpt4 key购买 nike

我正在尝试这个,但在输入>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;
}

最佳答案

除了dmh2000's answer :您可以在检查中利用冗余。例如,如果一个数不能被 n 整除,它也不能被 n 的任何倍数整除。例如,不能被 2 整除的数也不能被 4、6 或 8 整除。

这种技术被称为 sieving .

关于c++ - 如何找到时间复杂度小于 N 的给定数字 N 的所有因子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25061503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com