我有一个等式:
x^2 mod p = z ;
p
和z
。 x
,p
和z
为正整数,x
的 MAX 值(例如 M )。 p
prime 。当x
和p
已知时,我如何计算(多个可能的值)z
?
更新
我在这里找到了解决方案:
答案 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.
正如您手中已知的p
和z
一样,您可以单独检查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