Tag: biginteger

如何将18位数字字符串转换为BigInteger?

任何人都可以帮助我将18位数字字符串数字转换为java中的BigInteger ie;字符串”0x9999999999999999″应显示为0x9999999999999999数值。

MutableBigInteger的性能

我尝试使用BigInteger计算具有大精度(高达10000)的特定输入下的整数平方根的数字之和。 public class SquareRootHackerRankJarvis { static BigInteger limit; static BigInteger a; static BigInteger b; private static BigInteger squareroot(int n, BigInteger ten, BigInteger hundred, BigInteger five) { a = BigInteger.valueOf(n * 5); b = BigInteger.valueOf(5); while (b.compareTo(limit) == -1) { if (a.compareTo(b) != -1) { a = a.subtract(b); b = b.add(ten); } else { a = […]

BigIntegers对BigIntegers的力量

我正在尝试使用BigInteger类在Java中实现Fermat,Miller-Rabin或AKS算法。 我认为我已经实现了Fermat测试,只是BigInteger类不允许将BigIntegers带入BigIntegers的强大function(人们只能将BigIntegers带入原始int的强大function)。 有没有解决的办法? 有问题的行在我的代码中表示: public static boolean fermatPrimalityTest(BigInteger n) { BigInteger a; Random rand = new Random(); int maxIterations = 100000; for (int i = 0; i < maxIterations; i++) { a = new BigInteger(2048, rand); // PROBLEM WITH a.pow(n) BECAUSE n IS NOT A BigInteger boolean test = ((a.pow(n)).minus(BigInteger.ONE)).equals((BigInteger.ONE).mod(n)); if (!test) return false; } […]

将任意大小的byte 转换为BigInteger 然后安全地转换回完全相同的byte ,任何线索?

我认为完全转换为BigInteger []在我的情况下是最佳的。 有没有人用Java编写或发现这个并愿意分享? 所以想象我有任意大小byte[] = {0xff,0x3e,0x12,0x45,0x1d,0x11,0x2a,0x80,0x81,0x45,0x1d,0x11,0x2a,0x80,0x81}如何将其转换为BigInteger的数组然后能够安全地恢复它原来的字节数组? ty提前。

如何将BigInteger传递给签名函数

在这里,我正在使用RSA实现数字签名。 我从文件中读取纯文本并获取MD5即纯文本的MessageDigest实例,并将该纯文本转换为BigInteger,此处应签署此bigInteger。 MessageDigest m1 = MessageDigest.getInstance(“MD5”); m1.update(bFile); byte [] digest1 = m1.digest(); for(int i=0; i < digest1.length ; i++){ System.out.println("b["+i+"]="+digest1[i]); } BigInteger bi = new BigInteger(digest1); //这里我不知道如何将BigInteger传递给Signature函数。 有人可以帮帮我吧。

BigInteger.toByteArray()返回有目的的前导零?

我正在将bigints转换为二进制,radix16和radix64编码,并看到神秘的msb零填充。 这是一个大问题,我可以通过剥离零填充或者做其他事情来解决这个问题吗? 我的测试代码: String s; System.out.printf( “%s length %d\n”, s = “123456789A”, (new BigInteger( s, 16 )).toByteArray().length ); System.out.printf( “%s length %d\n”, s = “F23456789A”, (new BigInteger( s, 16 )).toByteArray().length ); 产生输出: 123456789A length 5 F23456789A length 6 其中较长的arrays在前面具有零填充。 检查BigInteger.toByteArray()后,我看到: public byte[] toByteArray() { int byteLen = bitLength()/8 + 1; byte[] byteArray = new byte[byteLen]; […]

Java BigInteger素数

我正在尝试生成BigInteger类型的随机素数,即我提供的最小值和最大值之间。 我知道BigInteger.probablePrime(int bitlength,random),但我不确定比特长度是如何转换为输出素数的最大值/最小值。 谢谢,Steven1350

我可以用什么变量类型来保存java中的大数(30+位)?

是否有一个非常大的变量类型我可以在Java中使用来存储大量数字(最多四十位数)? long的最大值是9223372036854775807,这是19位数 – 不够大。 我正在尝试创建一个可以处理大数字的计算器,因为现在大多数只能保持不足10位左右的数字,而且我希望得到数字更大幅度的精确计算 编辑 谢谢你的回答。 我可以将BigInteger用于大整数,唯一的限制是计算机的内存(应该足够)。 对于小数,我将使用float ^ e,如@WebDaldo建议,或BigDecimal (类似于BigInteger),如@kocko建议的那样。

提高Java的BigInteger性能

如何提高Java的Big Integer的性能? 例如,这个阶乘程序: import java.math.*; class Fac { public static void main(String[] args) { BigInteger i = BigInteger.ONE; for(BigInteger z=BigInteger.valueOf(2);z.compareTo(BigInteger.valueOf(99999)) != 0;) { i = i.multiply(z); z = z.add(BigInteger.ONE); } System.out.println( i ); } } 该计划于31.5秒完成 C ++中的位置: #include #include using namespace std; int main() { mpz_class r; r = 1; for(int z=2;z<99999;++z) { r […]

Java Mutable BigInteger类

我正在使用BigIntegers进行计算,它使用一个调用multiply()大约1000亿次的循环,而BigInteger创建的新对象使得它非常慢。 我希望有人写过或找到了MutableBigInteger类。 我在java.math包中找到了MutableBigInteger,但它是私有的,当我将代码复制到一个新类时,会出现很多错误,其中大部分都是我不知道如何修复的。 像MutableBigInteger这样的Java类有哪些实现允许修改值?