Collatz序列:效率问题或软件/硬件太慢
Collatz Sequence: Efficiency problem or software/hardware too slow?
我认为已经制定了一种解决方案,可以找到最大的collatz序列,但需要大量时间!我的问题确实在哪里来源:代码,软件,硬件?
我已经在互联网上进行了一些研究,并且看到人们在2000毫秒左右的情况下以几乎相同的方式做到了这一点。而我的计算机甚至没有那么远!我正在使用Visual Studio,C 。顺便说一句,在确定113383的序列时,可以看出在调试后,可以看到计算突然(停止,挣扎,悬挂?(。
这是我的小代码片段:
(带有地图的零件和第一个(如果可能的话(,我认为可以加快整个过程,但不会加快。
#include <iostream>
#include <set>
#include <map>
using namespace std;
#define LIMIT 1234567
int main()
{
int n = 0;
int compare = 0;
int longest = 0;
int counter = 1;
set <int> nums2excl;
map <int, int> mappi;
map <int, int>::const_iterator itMap = mappi.begin();
for (int i = 13; i < LIMIT; i++)
{
if (nums2excl.find(i) != nums2excl.end())
{
continue;
}
n = i;
while (n != 1)
{
itMap = mappi.find(n);
if (itMap != mappi.end())
{
counter += ((*itMap).second - 1);
break;
}
if (n % 2 == 0)
{
n /= 2;
}
else
{
n = 3 * n + 1;
if (n > i)
{
nums2excl.emplace(n);
}
}
counter++;
}
mappi.emplace(i, counter);
if (counter > compare)
{
compare = counter;
longest = i;
//Test
cout << i << endl;
}
counter = 1;
}
return 0;
}
现在,我是否错过了代码中的一些错误,关于效率的错误,还是我的笔记本电脑太慢了?
n需要具有较大的数据类型,长期解决了。
相关文章:
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- 用于在并发环境中访问 MMIO 的软件模式
- 有没有办法实现 fmu 导出到基于 c++ 的仿真软件以使用 fmi?
- FFmpeg——使用硬件加速进行视频解码
- 从C++调用 Python 并访问通过 Anaconda 安装的软件包
- 有关图像处理应用程序的硬件和软件安全性的建议
- HAL 中的硬件特定库
- 通过自制软件(macOS)安装的clang++:编译错误
- 我们能否在stm32f中使用硬件定时器控制两个独立的进程
- 如何在软件代码中使用ofstream创建文件
- 如何在Linux上正确发布C++软件(游戏)
- 尝试使用 RTool 在 R4.0 上安装软件包时出现编译错误
- 硬件抽象层 (HAL) 中实现的动态切换
- 需要实例化不同类/对象并在启动时确定的硬件插槽的设计模式
- Collatz序列:效率问题或软件/硬件太慢
- sdl软件渲染器不工作,工作在硬件加速的一个
- 测试操作系统性能时,硬件开销和软件开销有什么区别
- IRQ 8 无法正常工作...硬件还是软件?
- 我需要什么硬件/软件移植我的c++ /wxWidgets应用程序到MAC