java - 如何在 java 中生成 160 位素数?

标签 java primes

我想在 java 中生成一个 160 位素数。我知道我必须遍历所有 160 位数字,对于任何数字 n,我必须检查它们是否可以被任何小于 sqroot(n ) 或通过任何素数测试,例如 Miller-Rabin 测试。我的问题是:

  1. 是否有任何特定的库可以执行此操作?

  2. 还有其他(更好的)方法吗?

最佳答案

BigInteger.probablePrime(160, new Random())生成几乎肯定是素数的 BigInteger -- 它不是素数的概率小于您被闪电击中的概率。一般来说,BigInteger 已经内置了经过严格测试和优化的素数测试操作。

无论如何,这不会永远持续下去的原因是,根据素数定理,随机选择的 n 位数字成为素数的概率与 1/n 成正比,因此平均而言,您只需要尝试O(n) 个不同的随机 n 位数字,然后您才能找到一个素数。

关于java - 如何在 java 中生成 160 位素数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15056184/

相关文章:

java - 列出 jax-rs 服务 bean

c++ - 100% 确定性的快速素数测试?

c - 从 C 中的输入整数集中查找最大素数

java - 尝试连接mysql数据库

java - 如何在 JPA/Hibernate 中设置具有通用 Id 的 MappedSuperClass

java - 发生 RecordStoreFullException 时奇怪的 RecordStore 行为

java - 将 Jersey 本地 REST 服务引入 openshift

java - 我真的不明白我的讲师在这里说的是什么——关于用 Java 计算素数的讲义

ruby - 为什么我用于查找素数的 ruby​​ 编码不起作用?

c++ - c++中long long的模运算