我的问题为x =(16807 X k)的%65536个找到最小值,以满足模数
即16807k≡X(MOD 65536)
我需要计算k值知道X。 到目前为止,我的最大努力是蛮力。有没有数学方法来计算k? 如果没有任何优化我当前的代码将不胜感激。
t = x;
while (t += 15115) // 16807k = 65536n + x - this is the n
{
if (t%16807 == 0)
return t/16807;
}
return x;
编辑:更改+ =到15115
X =(16807值X k)%65536和16807k =在x mod 65536的模逆是不等价的。 – Roecrew
除了@Roecrew评论:第一个方程有多个'k'作为答案,第二个有'k'。 你需要找到所有'k'吗? –
老兄对不起,但你没有任何意义。你能告诉我们至少这个代码的应用是什么吗? – Roecrew