给定方程y^2=x^3+2*x+4 mod 7,我想找到x和y在0到6范围内的所有可能的解。我写了下面的程序。
for (int y=0;y<7;y++)
{
for (int x=0;x<7;x++)
{
if ((x^3+5*x+4)%7==(y^2)%7)
{
cout<<"("<<x<<","<<y<<")"<<endl;
}
}
}
然而,这个程序的输出是错误的。例如,程序打印出(4,1),但这并不满足方程。我如何解决这个问题?
我认为问题在于 x^3
和 y^2
不是电源操作,确实是xor操作,所以,你可以使用 x*x*x
和 y*y
而不是。
for (int y=0;y<7;y++)
{
for (int x=0;x<7;x++)
{
if ((x*x*x+5*x+4)%7==(y*y)%7)
{
std::cout<<"("<<x<<","<<y<<")"<<std::endl;
}
}
}
}