具有给定条件的反模量算子

时间:2014-06-26 06:39:01

标签: c math reverse modulus

我有一个等式:

x^2 mod p = z ;

pzxpz为正整数,x MAX 值(例如 M )。 p prime 。当xp已知时,我如何计算(多个可能的值)z

更新

我在这里找到了解决方案:

https://math.stackexchange.com/questions/848062/reverse-modulus-operator-with-given-condition/848106#848106

2 个答案:

答案 0 :(得分:0)

如果x^2 mod p = z
然后x^2 = n*p + z表示某个整数n
如果已知p和z,则用n替换整数值来查找x

答案 1 :(得分:0)

我不知道为什么Santosh被投票,但他的推理是正确的!

As x^2 mod p=z   --->>    x^2=n*p+z   // for some integer n.

正如您手中已知的pz一样,您可以单独检查if x^2 mod p=z,如下所示,然后查找x(或者更确切地说等于x的值) ): -

    public static void main(String[] args) {   //main-method
     int x,p,z,xMAX=10;     // as per your condition
     p=13;                         // assigned p a prime positive integer value
     z=10;                         // assigned z a positive integer value
     for(x=0;x<=xMAX;x++){
      int sq=(int)Math.pow(x,2);    // squrare of x for each loop        
          if(sq%p==z){               // comparing square-value modulus prime value with value of z to be equal
           System.out.println("One value of x possible is "+x);   // if matches,you have one solution
          }
          else continue;
     }
   }

很抱歉,代码位于Java,但我在代码中提到了comments来标识每个部分。此外,这非常complicated algorithm因为我可以拥有better algorithm!但是,输出工作正常并且是正确的!

按代码输出: -

One value of x possible is 6 
One value of x possible is 7