问题标签 [prime-factoring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
18629 浏览

algorithm - 什么是分解高斯整数的好方法?

我已经有素数分解(整数),但现在我想为高斯整数实现它,但我应该怎么做呢?谢谢!

0 投票
4 回答
8690 浏览

encryption - 能够分解大数如何决定流行加密算法的安全性?

加密算法的安全性如何依赖于大数分解?

例如,我在一些数学编程论坛上读到,通过使用二次筛或通用数域筛,可以在商用硬件上相对轻松地分解 256 位数字。

这如何转化为能够破坏 RSA、AES 等算法的安全性?能够将数字分解为密钥的长度是否足够?

是否有任何了解密码学和加密算法的人可以对此有所了解?

0 投票
7 回答
2231 浏览

python - 超过python中列表的大小

我正在尝试在python中实现eratosthenes的筛子,但是当试图找到所有素数直到例如779695003923747564589111193840021的平方根时,我收到一个错误,说range()的结果有太多项目。我的问题是,我该如何避免这个问题,如果我用 while 循环实例化列表,我会收到一个错误,说我使用了太多内存(甚至在它开始使用页面文件之前),下面列出了这两个:

使用范围()

使用同时:

0 投票
3 回答
3179 浏览

php - php的最大素数

我用 PHP 编写了一个程序来找到最大的素因数。我认为它非常优化,因为它加载速度非常快。但是,有一个问题:它没有计算非常大的数字的质因数。这是程序:

0 投票
3 回答
6771 浏览

cryptography - 彩虹表作为大型素数分解的解决方案

在我读过的关于公钥密码学的解释中,据说通过将两个非常大的素数相乘可以得出一些大数。由于分解大素数的乘积几乎不可能非常耗时,因此您有安全性。

这似乎是一个可以用彩虹表轻松解决的问题。如果您知道所用素数的大致大小并且知道其中有 2 个,您可以快速构建一个彩虹表。这将是一个非常大的表,但它可以完成并且任务可以跨硬件并行化。

为什么彩虹表不是基于乘以大素数来击败公钥加密的有效方法?

免责声明:显然,数以万计的疯狂智能安全意识的人并不是碰巧错过了几十年我在一个下午想到的东西。我认为我误解了这一点,因为我正在阅读简化的外行解释(例如:如果使用超过 2 个数字),但我还不够了解,不知道我的知识差距在哪里。

编辑:我知道“彩虹表”与在查找表中使用预先计算的哈希值有关,但上面听起来像是彩虹表攻击,所以我在这里使用这个术语。


编辑2:如答案中所述,没有办法只存储所有素数,更不用说它们的所有产品了。

  • 这个网站说大约有这么多 512 位素数: ((2^511) * 1) / (512 log(2)) = 4.35 × 10 151
  • 太阳的质量是 2 × 10 30 kg 或 2 × 10 33 g
  • 每克太阳有2.17 × 10 124 个素数。
  • 数量。可以容纳 1 KB 的 512 位数字:1 kb = 1024 字节 = 8192 位 / 512 = 16
  • 可以容纳 1 TB:16*1024*1024*1024 = 1.72 × 10 10
  • 拍字节:16*1024*1024*1024*1024 = 1.72 × 10 13
  • 艾字节:16*1024*1024*1024*1024*1024 = 1.72 × 10 16

即使 1 艾字节重 1 克,我们也远未达到能够将所有这些数字放入具有太阳质量的硬盘驱动器所需的 2.17 × 10 124

0 投票
2 回答
213 浏览

matrix - 为具有 n 个元素及其比例的给定范围的表找到最佳列和行大小

我正在寻找一种从 n 个元素创建表格的最佳方法,以便理想情况下没有空单元格,但同时表格维度列/行的比例变得尽可能接近 1。

当然,如果 n 是一个平方数,那么从那时起就很容易了

如果 n 是一个素数,很明显会有空单元格,所以我目前处理这个问题的方法是:

对于所有其他情况,我的计划是获取 n 的主要因素,然后搜索所有可能的排列,以寻找其组合比例最接近 1 的排列。

所以我的问题是:有没有更好的方法来做到这一点?或者至少有一种方法不必测试主要因素的所有可能组合?

0 投票
4 回答
261 浏览

java - 使 Project Euler 的解决方案更高效

最初,我在让这段代码正常运行时遇到了一些问题,但经过一些调整后,我对其进行了调试并准备就绪。

我已经对这个程序进行了几次修改。我从整数值开始,却发现这个数字太大而无法放入 int 中。然后我改用 BigIntegers,这被证明很麻烦,但可行。从那里,我切换到 longs (从一开始就应该这样做)并将我的代码的运行时间缩短 8 倍(或更多)。

这是现在的代码:

它已经运行了几个小时,但仍然没有找到任何东西。我在网上看到解决这个难题的典型方法就像解析560GB的数据=/。

有什么加快速度的技巧吗?

非常感谢,

贾斯蒂安

编辑:

优化代码:

运行

0 投票
5 回答
6142 浏览

c - 在c中找到复合数的最大素数

我接受一个复合数作为输入。我想打印它的所有因子以及该数字的最大素因子。我已经编写了以下代码。在数字 51 之前它工作得很好。但是如果输入任何大于 51 的数字,则会显示错误的输出。如何更正我的代码?

0 投票
4 回答
2093 浏览

c++ - 编写一个算法以返回整数的质数,例如,如果您的输入是 10,则输出是包含元素 2 和 5 的列表 a

这是我在离散数学中的作业。我试着这样做。

0 投票
3 回答
4659 浏览

algorithm - 对米勒拉宾感到困惑

作为我自己的练习,我正在实施 Miller-Rabin 测试。(通过 SICP 工作)。我理解费马的小定理,并且能够成功地实现它。我在 Miller-Rabin 测试中被绊倒的部分是这个“1 mod n”业务。1 mod n(n是一些随机整数)不是总是1吗?所以我对“1 模 n 的非平凡平方根”可能是什么感到困惑,因为在我看来,“1 mod n”在处理整数值时始终为 1。我错过了什么?