我有两个unsigned long
s a
和q
我希望找到0到q-1之间的数字n,这样n + a就可以被q整除(没有溢出) )。
换句话说,我试图找到一种(便携式)计算方法(-a)%q
,它位于0和q-1之间。 (该表达式的符号是在C89中实现定义的。)什么是这样做的好方法?
答案 0 :(得分:1)
你正在寻找的是数学等价于(q - a)mod q,它反过来等于(q - (a mod q))mod q。因此,我认为您应该能够按如下方式计算:
unsigned long result = (q - (a % q)) % q;