小编Dan*_*ani的帖子

使用gmp有效地考虑大量因素

我需要得到大数的所有素数因子,这些因子可以很容易地达到1k位.这些数字实际上是随机的,所以它应该不难.我该如何有效地做到这一点?我使用C++和GMP库.

编辑:我猜你们都误解了我.
我的意思是素数是得到数字的所有素因子.
对不起我的英语,在我的语言素数和因素是相同的:)


澄清(来自OP的其他帖子):

我需要的是一种使用C++和GMP(Gnu Multiple Precession lib)有效地计算(找到数字的素数因子)大数(可能达到2048位)的方法,或者更不用说任何其他方式.这些数字实际上是随机的,所以几乎没有机会难以分解,即使这个数字难以计算,我也可以重新编号(尽管不能选择).

c++ math primes gmp factorization

6
推荐指数
2
解决办法
7667
查看次数

如何将重复模式复制到内存缓冲区?

我想在内存块中写一个重复的字节模式.我的想法是编写模式的第一个示例,然后将其复制到缓冲区的其余部分.例如,如果我从这开始:

ptr: 123400000000
Run Code Online (Sandbox Code Playgroud)

之后,我希望它看起来像这样:

ptr: 123412341234
Run Code Online (Sandbox Code Playgroud)

我以为我可以memcpy用来写相交区域,像这样:

memcpy(ptr + 4, ptr, 8);
Run Code Online (Sandbox Code Playgroud)

该标准没有指定副本将发生的顺序,因此如果某些实现使其以相反的顺序复制,则它可以给出不同的结果:

ptr: 123412340000
Run Code Online (Sandbox Code Playgroud)

甚至合并结果.

有没有让我仍然使用的解决方法memcpy,或者我是否必须实现自己的for循环?请注意,我无法使用,memmove因为它正是我正在努力避免的; 它让ptr成为123412340000我想要的123412341234.

我为Mac/iPhone(clang编译器)编程,但一般的答案也会很好.

c memcpy

6
推荐指数
2
解决办法
3683
查看次数

交叉编译php

我正试图交叉编译php for arm并取得了很好的进展,但我完全陷入了想要运行php本身的地方(不知道为什么).因为它是一个arm二进制而不是intel(我的构建平台)它不会运行:

/bin/sh: /path-to-build/sapi/cli/php: cannot execute binary file
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?配置脚本理解我是交叉编译但没有做任何事情(来自配置日志):

checking whether the C compiler (/path-to-compiler/arm-none-linux-gnueabi-gcc) is a cross-compiler... yes
Run Code Online (Sandbox Code Playgroud)

我正在php-5.3.6使用configure命令行进行编译:

export CC=/path-to-cc/arm-none-linux-gnueabi-gcc
../configure --prefix=/prefix-path/ --host=arm-none-linux-gnueabi
             --disable-libxml --disable-dom --disable-openssl
             --without-iconv --without-openssl --disable-simplexml
             --disable-xml --disable-xmlreader --disable-xmlwriter
             --without-pear --without-sqlite --without-sqlite3
             --disable-pdo --without-pdo-sqlite
Run Code Online (Sandbox Code Playgroud)

php cross-compiling

6
推荐指数
1
解决办法
5620
查看次数

控制台(/ SUBSYSTEM:CONSOLE)和Windows(/ SUBSYSTEM:WINDOWS)之间的区别

有人可以在visual studio 2008中解释链接器属性中这两个声明之间的区别(请尽可能简单,我是C++世界的新手)

编辑:如果可能,你可以给我两个小程序来显示效果

c++ visual-studio

6
推荐指数
2
解决办法
2万
查看次数

如何在软件仿真模式下启动OpenGL?

有什么方法可以在软件仿真模式下启动 OpenGL,比如 DirectX,那里有参考渲染选项?

opengl

6
推荐指数
1
解决办法
5307
查看次数

获得最靠近网格点的点

我有一个一维的网格.它的间距是一个浮点.我有一个浮点坐标点.我需要找到距离最近的网格点的距离.
例如:

            0.12
             |
             *
 |---------|---------|---------|---------|---------|
 0        0.1       0.2       0.3       0.4       0.5
Run Code Online (Sandbox Code Playgroud)

结果将是-0.02因为最接近的点在它后面.
但如果是的话

                -0.66
                  |
                  *
 |---------|---------|---------|---------|---------|
-1       -0.8      -0.6      -0.4      -0.2        0
Run Code Online (Sandbox Code Playgroud)

结果将是0.06.正如你可以看到它的浮点,可能是负面的.
我尝试了以下方法:

float spacing = ...;
float point = ...;

while(point >= spacing) point -= spacing;
while(point < 0) point += spacing;

if(std::abs(point - spacing) < point) point -= spacing;
Run Code Online (Sandbox Code Playgroud)

它有效,但我确信有一种没有循环的方法

c++ algorithm computational-geometry

6
推荐指数
1
解决办法
1174
查看次数

保留计数为0的对象不会被释放

为什么我的对象在下面的泄漏跟踪中没有被释放?
在此输入图像描述
跟踪显示其引用计数为0,那么为什么它不会被释放?
该对象是直接派生自定义的类NSObject.我用它做的就是alloc它,init从它复制一些字符串/数字,并发送release,但仍然认为它是泄漏,并且不会被解除分配.我认为它在乐器的分配下是"活着的"所以它真的没有被释放.我创建了数百个这样的对象,所以我不能允许它们存活.
如何才能使此对象解除分配?为什么不首先解除分配?

memory-leaks memory-management reference-counting objective-c

6
推荐指数
1
解决办法
548
查看次数

永远运行boost asio io_service

我打电话boost::asio::io_service::run(),它立即返回,因为它没有工作要做.
一个不同的线程将在稍后排队工作,但我不希望该run线程退出.
解决方案是忙于等待运行:

while(true) service.run();
Run Code Online (Sandbox Code Playgroud)

但是,当没有工作要做时,这会浪费CPU.
另一种方法是等待每次排队等待服务时引发的事件.
这种方式有一个竞争:如果一个线程停止工作,然后第二个线程发布工作并在第一个有机会等待之前引发事件,第一个将永远等待.
我宁愿避免这种情况,并在有工作要做时知道服务.
有可能做这样的事情:

while(true)
{
    service.wait_for_work();
    service.run();
}
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-asio

6
推荐指数
1
解决办法
1498
查看次数

延迟执行中的数组子字符串

在LINQ中是否有任何方法可以在延迟执行中获取数组的子集(意味着在枚举时复制,而不是构建时)?

c# linq

5
推荐指数
1
解决办法
117
查看次数

展开角度为360

如何展开角度以在[0,360]中产生角度?
我可以做这个:

int unwind(int angle)
{
    while(angle < 0) angle += 360;
    while(angle >= 360) angle -= 360;
}
Run Code Online (Sandbox Code Playgroud)

但我很确定有一种方法可以在没有循环的情况下做到这一点.我也试过,angle % 360但这对负角度(-60 % 360 == -60)不起作用.

c++ angle

5
推荐指数
1
解决办法
1314
查看次数