c# - BigInteger 返回 0 的模运算

标签 c# math biginteger

我正在尝试在 C# 中使用 2 个 BigIntegers 计算模数。

这里是有问题的方法:

    static List<int> Get(BigInteger possibleColours, BigInteger length, BigInteger i)
    {
        List<int> ret = new List<int>();
        BigInteger sizes = 1;


        for (int j = 0; j < length; j++)
        {
            BigInteger index = (i/sizes) % possibleColours;

            ret.Add((int)index);
            sizes *= possibleColours;
        }
        return ret;
    }

这一行就是问题所在:

BigInteger index = (i/sizes) % possibleColours;

除法操作似乎工作正常,但模数似乎总是将索引设置为 0,无论我以何种方式分解它,即每行执行一个操作。

如有任何帮助,我们将不胜感激!

最佳答案

您提供的以下数据样本:

possibleColours: 65536,  
i: 20

您在此处增加大小:

sizes *= possibleColours;

所以在第二次迭代中你已经有了(应用提供的示例数据):

                    i   sizes   possibleColours
BigInteger index = (20/65536) % 65536;

其中 20/65536 == 0 当您分配 integers 时,因此分配的结果也是 integer 本身。

我们得到之后:

BigInteger index = 0 % 65536;,所以 index==0

这意味着在第一次迭代之后,您将始终得到 0,这就是您的实际体验。

关于c# - BigInteger 返回 0 的模运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22392245/

相关文章:

math - 大整数的 OR 乘法

c# - dotnet ef 数据库更新无法加载文件或程序集“Microsoft.Extensions.FileProviders.Abstractions”

c# - Asp.net Core 2 使用 Identity Server 4 启用 Multi-Tenancy

java - 如何在给定起点坐标的情况下找到最近的目标?

python - 计算素数列表中数字位置的最佳方法?

java - 如何使用 BigInteger 和小数?

java - 使用java RSA加密并使用BigInteger解密

java - 使用流读取文本文件并保存到 BigInteger 数组

c# - 向 java servlet 提供信息

c# - 如何设置 ASP :Menu with CSS 的样式