如何获得真正的欧几里德余数?

时间:2016-02-02 22:34:22

标签: math integer standards modulus c89

我有两个unsigned long s aq我希望找到0到q-1之间的数字n,这样n + a就可以被q整除(没有溢出) )。

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

1 个答案:

答案 0 :(得分:1)

你正在寻找的是数学等价于(q - a)mod q,它反过来等于(q - (a mod q))mod q。因此,我认为您应该能够按如下方式计算:

 unsigned long result = (q - (a % q)) % q;
相关问题