我如何加速我的算法?

时间:2016-12-04 15:15:05

标签: c++ algorithm base

我解决了一些问题而我无法解决这些问题。我必须写一个用户输入十进制数的代码,我需要计算在其他众多系统中该数字从数字1开始的次数。 这是算法:

Block

2 个答案:

答案 0 :(得分:0)

而不是循环,请使用:

x = x - ((x / i) * i);
if (x == 1)
{
    ...
}

这仅适用于整数数学。

答案 1 :(得分:0)

您可以通过不检查验证的i来加速它

i <= n < 2*i因为所有人都会满意。 因此,请仅检查for(int i = 3; i <= n/2; ++i),然后将(n + 1)/ 2添加到最终brOsnova

我确信它可以进一步加速,并且必须有一些O(log(n))算法,但也许它会被牵强......或者是algorithm标签的一个好的候选问题。