-2

我正在尝试使用 for 循环打印从 N 到 K 的数字 N 的所有倍数

    for(i=N;i<=K;i+=N)
        printf("%d\n", i);

我相信这是 O(n) 但我想知道是否有更快的方法。谢谢

4

2 回答 2

3

由于您的输出大小为 K/N,因此您的解决方案必须至少为 O(K/N)(或您所说的 O(n)),否则您将无法创建整个输出。

但是,可以进行非算法优化,例如最小化对 printf 的调用次数(尽管我不确定这是否会对性能产生任何实际影响)。

于 2012-05-08T07:02:05.343 回答
0

由于在循环算法中没有什么可以优化的,剩下的就是重量级了printf。您可以在此处实现您自己的(非标准)版本itoa(),将整数转换为数字序列。

但是这里到底是什么太慢了?您是否受 I/O 限制?CPU 受限?还是只是好奇?

于 2012-05-08T08:12:10.143 回答