为什么我的modulo运算符不能正常使用?[重复]

问题描述 投票:0回答:1

给定方程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),但这并不满足方程。我如何解决这个问题?

c++ algorithm modulo
1个回答
0
投票

我认为问题在于 x^3y^2 不是电源操作,确实是xor操作,所以,你可以使用 x*x*xy*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;
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.