Math 当模值为非素数时,如何在除法方程中使用模算子

Math 当模值为非素数时,如何在除法方程中使用模算子,math,modulus,Math,Modulus,我知道(a*b)%M=(a%M*b%M)%M 但是如果方程是:((a*b)/c)%M..我想我不能在这里也使用上面的逻辑..这里M是一个非素数..你可以假设(a*b)/c永远不会以浮点形式结束 For eg: If a=10 b=9 and c=6,M=4 then (a*b)/c=15 and 15%4=3 but if I use the property as it is with multiplications then ((10%4*9%4)/(6%4))%4= (2*1)/2=1

我知道(a*b)%M=(a%M*b%M)%M

但是如果方程是:((a*b)/c)%M..我想我不能在这里也使用上面的逻辑..这里M是一个非素数..你可以假设(a*b)/c永远不会以浮点形式结束

For eg:
If a=10 b=9 and c=6,M=4 then (a*b)/c=15 and 15%4=3
but if I use the property as it is with multiplications then ((10%4*9%4)/(6%4))%4= (2*1)/2=1

请告诉我如何解决这类问题???

如果c和M是相对素数,你可以将c^-1%M相乘,这样数学就行了。然而,如果GCD(c,M)>1,那么c^-1%M不存在,而且据我所知,没有简单的方法可以做到这一点

至于c^-1%M是什么,它是一个c*c^-1%M=1的数字。例如,如果c=2,M=9,2*5%9=10%9=1,那么c^-1%M=5


你可以用-,得到ac+bM=1,所以ac=1+(-b)M和ac%M=1来计算c^-1%M。

也许我不够聪明,但我不知道问题是什么。你想解决什么问题?我同意,如果知道你想实现什么,那就太好了。除此之外,我认为这个问题属于感谢..我如何在程序中存储c^-1..它需要一个双精度..或者我不需要这样做,只需写(a%Mb%Mc^-1%M)%M??这是一个整数--请参阅我的编辑。这偏离了离散数学(密码学中使用的那种)。