Algorithm 以编程方式分解大数

Algorithm 以编程方式分解大数,algorithm,math,factorization,Algorithm,Math,Factorization,好的,我有一个巨大的数字f。这个数字实际上刚刚超过100位。我知道这些因素的大小大致相同 如果我的资源和时间有限,我应该使用什么语言和算法?我将在限定时间内编写算法的时间长度包括在内 想法 编辑:我说的有限是指尽可能少的时间。这听起来是云计算的一个很好的练习(可能是一个罕见的好例子)。这应该很容易对其运行并行处理。将因素池划分到每个流程中 类似这样的事情可能会有帮助:更多细节请访问 (在过去的一个月里,我看了一个很好的视频演示,演示了一些类似于我在这里建议的东西——当然,现在我找不到链接。) 特

好的,我有一个巨大的数字
f
。这个数字实际上刚刚超过100位。我知道这些因素的大小大致相同

如果我的资源和时间有限,我应该使用什么语言和算法?我将在限定时间内编写算法的时间长度包括在内

想法


编辑:我说的有限是指尽可能少的时间。

这听起来是云计算的一个很好的练习(可能是一个罕见的好例子)。这应该很容易对其运行并行处理。将因素池划分到每个流程中

类似这样的事情可能会有帮助:更多细节请访问

(在过去的一个月里,我看了一个很好的视频演示,演示了一些类似于我在这里建议的东西——当然,现在我找不到链接。)

特别是如果你不需要按程序来做这件事,看看。(链接至from。)请特别注意第一个链接上“将一个数字分解为多台机器”下的注释。(由于源代码可用,您也可以使用Hadoop或类似工具以编程分布式方式运行它。)

while(xcout最先进的素因子分解算法是及其变体。对于大于100位的数字,该算法变得更有效

它有一个开源的实现,它能够将一个100位数字分解成两个大致相等的素数,只需几分钟


这里有一个算法和一个示例实现。这可能足以给您提供想法或帮助您开始。

@神秘有趣,但没有帮助。听起来是云计算的一个很好的练习。这应该很容易运行并行处理。(满足有限的时间,但可能不是有限的资源…)@tekknolagi事实上,经过再三考虑。我当时的印象是,每个因素都是100位数字。100位数字可能位于桌面上使用二次筛算法可以实现的上限。f是一个可以添加到帖子中的特定数字,还是你的意思是你会有一些大约100位数字的f?@tekknolagi,Mysticial-这就是为什么它是一个评论,而不是一个答案。:-“你所说的
因素库是什么意思”
?我只有一个数字。@Teknolagi-你有一个数字,但有很多可能的因素(你正在搜索的).对,对。关于因子分解的实际拆分有更多详细信息吗?@Teknolagi-请参阅我答案末尾的添加内容。“因子池”不正确。对于二次筛选器,它将是多项式池。太糟糕的是,OP的运算不适合于<代码> int <代码>。我不确定你是在开玩笑还是认真的。他不是在开玩笑。他只是在使用对Bigint类型有本地支持的编译器,并用各种优化编译代码。d筛选二次筛选的变体?不。但两者之间的截止阈值大约为100位。不过我会将其添加到我的答案中。谢谢。
while (x < Number) {
    if ((Number % x) == 0 ) { 
        cout << x << "*" << Number/x << endl;
        ++x;
    }  
    else ++x;
}