模数下的拉格朗日四方定理

时间:2017-01-17 14:34:39

标签: c++ math number-theory modular-arithmetic

给定一个整数 n ,打印出 A B C 的整数值的所有可能组合和 D 求解方程A ^ 2 + B ^ 2 + C ^ 2 + D ^ 2 = N,模数用户给定整数 p

int sum(int n)
{
int a, b, c, d, na, nb, nc, nd;
    int count = 0;


    for (a = 0, na = n; a * a <= na; a++) 
    {

        for (b = a, nb = na - a * a; b * b <= nb; b++) 
        {


           for (c = b, nc = nb - b * b; c * c <= nc; c++) {
            nd = nc - c * c;
            d = sqrt (nd);
            if (d * d == nd)  
                {
                    cout<< a<< b<< c<< d;
                    count++;


                }
            }
        }
    }

   cout<<"Found  solutions :"<< count;
}

我希望 a,b,c,d 的值介于 0到(p-1)之间。

我想在平方时输出相应的4个数字,并在模数P下求和,得出相应的乘积模P

例如 - 1 x 2 x 3 x 4 x 5 mod 100 = 120 mod 100 =(8 ^ 2 + 6 ^ 2 + 4 ^ 2 + 2 ^ 2)mod 100

注意:p的值可以是素数也可以是非素数。

我如何在上面的代码中反映出来?

0 个答案:

没有答案