获得所有倍数的更快捷方式?

时间:2012-05-08 06:57:56

标签: c math optimization

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

但这究竟是什么太慢?你受I / O约束吗? CPU绑定?或只是好奇?