【问题标题】:How to get the true Euclidean remainder?如何获得真正的欧几里得余数?
【发布时间】:2016-05-11 22:40:28
【问题描述】:

我有两个 unsigned longs aq,我想找到一个介于 0 和 q-1 之间的数字 n,这样 n + a 可以被 q 整除(没有溢出)。

换句话说,我正在尝试找到一种(便携式)计算(-a)%q 的方法,它位于0 和q-1 之间。 (该表达式的符号是在 C89 中实现定义的。)有什么好的方法来做到这一点?

【问题讨论】:

    标签: math integer standards modulus c89


    【解决方案1】:

    您要查找的内容在数学上等价于 (q - a) mod q,而后者又等价于 (q - (a mod q)) mod q。因此,我认为您应该能够按如下方式计算:

     unsigned long result = (q - (a % q)) % q;
    

    【讨论】:

      猜你喜欢
      • 2015-07-06
      • 2013-03-02
      • 1970-01-01
      • 2017-01-29
      • 2013-01-01
      • 2018-07-19
      • 2015-07-15
      相关资源
      最近更新 更多