我正在尝试使用for循环打印从N到K的所有N的倍数
for(i=N;i<=K;i+=N)
printf("%d\n", i);
我相信这是O(n),但我想知道是否有更快的方法。感谢
答案 0 :(得分:3)
由于输出的大小是K / N,因此您的解决方案必须至少为O(K / N)(或者您所称的O(n)),因为您无法创建整个否则输出。
然而,可以进行非算法优化,例如最小化对printf的调用次数(尽管我不确定这是否会对性能产生任何实际影响)。
答案 1 :(得分:0)
由于在循环算术中没有任何优化,剩下的就是重量printf
。您可以在此处实现自己的(非标准)itoa()
版本,将整数转换为数字序列。
但这究竟是什么太慢?你受I / O约束吗? CPU绑定?或只是好奇?