Computer >> Hướng Dẫn 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 ta cần viết một hàm JavaScript nhận vào một số n. Hàm phải tìm tất cả các cặp số x và y sao cho:

x^2 - 4y^2 = n.

Và trả về một mảng chứa tất cả các cặp đó.

Ví dụ

Dưới đâ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));

Kết quả

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