最近在试着拿Java实现MonteCarlo、LasVegas的字符串匹配算法。其中有一个重要的中间过程,即“取指纹”。需要用一个生成随机的01字符串mod一个随机素数,现在01字符串和素数我都实现了,但却无法进行模运算,因为那个字符串太长了(算法要求字符串越长越好),至少长度在4位数左右,无法转化成数值后同素数进行mod运算,不知哪位高人有合适的方法解决这个问题,困扰我很久了,这里我先谢谢回帖的XDJM了

解决方案 »

  1.   

    请问模运算如何通过移位实现呢?能举个例子说明吗?譬如1100010011000010110011110这样一个串(当然实际中的串比这个长很多),让他模运算一个大素数9923,请问如何求出mod的结果
      

  2.   

    我试着用BigInteger类实现了,不过还比较麻烦了,BigInteger的mod方法里面的参数必须是BigInteger类型,还得把int型的素数转化成BigInteger类,但好像没有直接的转化方法,我是首先将int转化为Integer类,然后Integer类转化为String,然后再利用BigInteger的构造方法(BigInteger(String val) )实现,感觉执行效率不是很高。不知道哪位牛人详细讲讲移位实现的思路