Tag: biginteger

由于其保护级别,Mono.Math.BigInteger无法访问

所以我正在使用ideone在C#中编写一个程序,我第一次使用Mono。 我正在尝试使用BigInteger类(Mono.Math.BigInteger),但我一直在收到错误。 这是我下面的代码。 发生了什么,我该如何解决? 谢谢。 using System; using Mono.Math; public class TFIB { public static int Main() { const int FIB_SEQUENCE_SIZE = 300; BigInteger[] FibonacciSequence = new BigInteger[FIB_SEQUENCE_SIZE]; // Calculate Fibonacci Sequence FibonacciSequence[0] = 0; FibonacciSequence[1] = 1; for (int i = 2; i < FIB_SEQUENCE_SIZE; i++) { FibonacciSequence[i] = FibonacciSequence[i – 1] + FibonacciSequence[i […]

划分BigIntegers返回double

我想计算一条线的斜率。 public sealed class Point { public System.Numerics.BigInteger x = 0; public System.Numerics.BigInteger y = 0; public double CalculateSlope (Point point) { return ((point.Y – this.Y) / (point.X – this.X)); } } 我知道BigInteger有一个DivRem函数,它返回除法结果和余数,但我不知道如何应用它来获得双精度。 我正在处理的数字远远超出了Int64.MaxValue的范围,因此剩余部分本身可能超出了传统划分的范围。 编辑 :不确定它是否有帮助,但我只处理正整数(> = 1)。 重要提示 :我只需要几个小数点的精度(5应该足够我的目的)。

如何在C#中实现BN_num_bytes()(和BN_num_bits())?

我将这一行从C ++移植到C#,我不是一个经验丰富的C ++程序员: unsigned int nSize = BN_num_bytes(this); 在.NET中我使用的是System.Numerics.BigInteger BigInteger num = originalBigNumber; byte[] numAsBytes = num.ToByteArray(); uint compactBitsRepresentation = 0; uint size2 = (uint)numAsBytes.Length; 我认为内部运作方式存在根本区别,因为如果BigInt等于: 来源的unit testing结果不匹配: 0 任何负数 0x00123456 我对BN_num_bytes ( 编辑:评论只是告诉我它是BN_num_bits的一个宏) 。 题 你会validation这些关于代码的猜测: 我需要移植BN_num_bytes这是一个宏((BN_num_bits(bn)+7)/8) (谢谢@WhozCraig) 我需要移植BN_num_bits ,它是floor(log2(w))+1 然后,如果存在不计算前导和尾随字节的可能性,那么Big / Little端机器上会发生什么? 有关系吗? 基于Security.StackExchange上的这些答案,以及我的应用程序不是性能关键,我可以使用.NET中的默认实现,而不是使用可能已经实现类似解决方法的备用库。 编辑:到目前为止,我的实现看起来像这样,但我不确定评论中提到的“LookupTable”是什么。 private static int BN_num_bytes(byte[] numAsBytes) { int bits […]

求和BigIntegers列表

我看了一遍,但无法弄清楚这一点。 你如何总结BigIntegers的列表? Using System.Numerics; Using System.Linq; List bigInts = new List(); BigInteger sum = bigInts.Sum(); // doesn’t work BigInteger sum = bigInts.Sum(); // doesn’t work BigInteger sum = bigInts.Sum(x => x); // doesn’t work 你必须这样做吗? BigInteger sum = new BigInteger(0); foreach(BigInteger bigint in bigInts) sum += bigint;

C#中的RSA实现

我试图在C#中实现RSA算法。 下面的代码在p和q较小时起作用,但在尝试复制RSA-100或更大时p和q非常大时不起作用。 例如: p = 61, q = 53, n = 3233, phi(n) = 3120, e = 17, d = 2753 一旦解密,我得到正确的原始消息。 我从RSA维基百科页面获得了这些值。 该代码也适用于p和q的其他小值。 但是,当使用RSA-100或更高版本时,我不会收到原始邮件。 我已经尝试对指数(e)使用不同的值并确保它与phi(n)互质但我无法得到正确的结果。 我错过了一些简单/明显的东西吗? 预先感谢您的帮助! //p and q for RSA-100 //string p = “37975227936943673922808872755445627854565536638199”; //string q = “40094690950920881030683735292761468389214899724061”; string p = “61”; string q = “53”; //Convert string to BigInteger BigInteger rsa_p […]

BigInteger到Hexadeximal

快速问题…… 我有一个愚蠢的长BigInteger,我想写一个文件作为hex字符串。 我知道Java提供了.toString(16)方法来实现这一点,但我找不到C#中的等价物。 我正在使用.net 4.0中的System.Numerics.BigInteger。 谢谢

BigInteger.ModPow()的替代品; 在C#中

我正在寻找.NET 4.x引入的C#BigInteger包的替代品。 使用这个对象的数学运算速度非常慢,我想这是因为算术是在比原始类型更高的层次上完成的 – 或者是非常优化的,无论如何。 Int64 / long / ulong或其他64位数字是小的,不会正确计算 – 我说的是64位整数到64位整数的幂。 希望有人可以建议我的东西。 提前致谢。

1 / BigInteger in c#

我要实现 BigInteger.ModPow(1/BigInteger, 2,5); 但是1/BigInteger总是返回0 ,这导致结果为0 。 我试图为c#寻找一些BigDecimal类,但我什么都没发现。 即使没有BigDecimal有没有办法计算这个?

将BigInteger转换为十进制(Base 10)字符串的最快方法?

答案到目前为止 所以这是代码细分。 //Time: ~7s (linear loop algorithm) //100,000! (456,574 decimal digits) BigInteger bigIntVar = computeFactorial(100000); //The first three here are just for comparison and are not actually Base 10. bigIntVar.ToBase64String() //Time: 00.001s | Base 64 | Tetrasexagesimal bigIntVar.ToString(“x”) //Time: 00.016s | Base 16 | Hexadecimal bigIntVar.ToBinaryString() //Time: 00.026s | Base 02 | Binary bigIntVar.ToQuickString() //Time: […]

C#:如何处理大数字的算术?

我正在编写一个应用程序,其中包含大量数字的算术,数字很多。 我之前写过一个类,它通过将大数字定义为字符串然后使用慢速算术字符串函数来简化处理大数字的过程。 这是最好的方法吗? 如果没有,我该如何处理这个问题? C#是否有针对此类情况的内置内容?