Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm tất cả các nghiệm của phương trình Diophantine bằng JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một số n. Hàm của chúng ta sẽ tìm tất cả các số x và y sao cho -

x^2 - 4y^2 = n.

Và nó sẽ trả về một mảng gồm tất cả các cặp như vậy.

Ví dụ

Sau đây là mã -

const num = 90005;
const findSolution = (num = 1) => {
   const res = [];
   let a, b;
   for(let a = 1; a <= Math.sqrt(num); a++){
      if(Number.isInteger(b = num/a)){
         if(Number.isInteger(x = (b+a)/2)){
            if(Number.isInteger(y = (b-a)/4)){
               res.push([x, y]);
            };
         };
      };
   };
   return res;
};
console.log(findSolution(num));

Đầu ra

[ [ 45003, 22501 ], [ 9003, 4499 ], [ 981, 467 ], [ 309, 37 ] ]