C++ 拉格朗日';模下的s四平方定理

C++ 拉格朗日';模下的s四平方定理,c++,math,number-theory,modular-arithmetic,C++,Math,Number Theory,Modular Arithmetic,给定一个整数n,打印出A、B、C和D的整数值的所有可能组合,它们在给定整数p下解方程A^2+B^2+C^2+D^2=n int和(int n) { 内部a、b、c、d、na、nb、nc、nd; 整数计数=0; 对于(a=0,na=n;a*an=n%p;->n%=p;;)@George,但这将改变n,并相应地改变a,b,c,d。这给了我错误的答案 int sum(int n) { int a, b, c, d, na, nb, nc, nd; int count = 0; fo

给定一个整数n,打印出A、B、C和D的整数值的所有可能组合,它们在给定整数p下解方程A^2+B^2+C^2+D^2=n

int和(int n)
{
内部a、b、c、d、na、nb、nc、nd;
整数计数=0;

对于(a=0,na=n;a*a
n=n%p;
->
n%=p;
;)@George,但这将改变
n
,并相应地改变
a,b,c,d
。这给了我错误的答案
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;
}