Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试使用 for 循环打印从 N 到 K 的数字 N 的所有倍数
for(i=N;i<=K;i+=N) printf("%d\n", i);
我相信这是 O(n) 但我想知道是否有更快的方法。谢谢
由于您的输出大小为 K/N,因此您的解决方案必须至少为 O(K/N)(或您所说的 O(n)),否则您将无法创建整个输出。
但是,可以进行非算法优化,例如最小化对 printf 的调用次数(尽管我不确定这是否会对性能产生任何实际影响)。
由于在循环算法中没有什么可以优化的,剩下的就是重量级了printf。您可以在此处实现您自己的(非标准)版本itoa(),将整数转换为数字序列。
printf
itoa()
但是这里到底是什么太慢了?您是否受 I/O 限制?CPU 受限?还是只是好奇?