我如何加快算法

How I can speed up my algorithm?

本文关键字:算法 何加快      更新时间:2023-10-16

我正在解决一些问题,我无法解决这些问题。我必须编写一个用户输入小数号码的代码,我需要计算该数字在其他众多系统中以数字1开头的次。这是算法:

for (int i = 3; i <= n; i++) {
    int z = n;
    while (z != 0) {
        x = z % i;
        z = z / i;
    }
    if (x == 1) {
        brOsnova++;
    }
}

您可以通过不检查i是验证

来加速它

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

我确定它可以进一步加速,并且必须有一些O(log(n))算法,但是也许它会被提取...或algorithm TAG的好候选问题。

而不是循环,请使用以下:

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

这仅适用于整数数学。