我如何加快算法
How I can speed up my algorithm?
我正在解决一些问题,我无法解决这些问题。我必须编写一个用户输入小数号码的代码,我需要计算该数字在其他众多系统中以数字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)
{
...
}
这仅适用于整数数学。
相关文章:
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 基于ELO的团队匹配算法
- C++选择排序算法中的逻辑错误
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- C++A*算法并不总是在路径中具有目标节点
- 排序算法c++
- Python中的for循环与C++有何不同
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 算法问题:查找从堆栈中弹出的所有序列
- 下面是排序算法O(n)吗
- KMP算法和LPS表构造的运行时间
- 为什么我的排序算法会更改数组值
- 求最大元素位置的分治算法
- 具有非整数边容量的最大流量的Dinic算法
- 我如何加快算法
- OPENCV:加快EM算法预测
- 你能加快这个算法吗?C# / C++
- C++如何加快算法-使用字符串
- 加快文件扫描的CRC算法