Maison > Article > interface Web > Question amusante JavaScript : équation diophantienne
En mathématiques, l'équation diophantienne est une équation polynomiale, généralement à deux inconnues ou plus, dont les solutions entières sont requises.
Étant donné l'équation diophantienne suivante, trouvez toutes ses solutions entières positives.
x² - 4y² = n
x et y sont des nombres inconnus, et n est une constante donnée. L'ensemble de solutions de x, y sera affiché à l'aide du tableau imbriqué suivant :
[[x1, y1], [x2, y2] ....]
Voici quelques exemples :
sol_equa(90005) ---> [[45003, 22501], [9003, 4499], [981, 467], [309, 37]]
sol_equa(90002) --> []
Voyons comment résoudre ce problème. Regardez d'abord le côté gauche de cette équation, x² - 4y². Vous aurez l'impression au premier coup d'œil que c'est possible. être transformé est (x - 2y) * (x 2y), quand vous y pensez, vous avez fait le premier pas.
Étant donné que la constante N du côté droit de l'équation peut être un très grand nombre, si la méthode exhaustive est utilisée, l'efficacité est très faible.
On peut essayer de décomposer cette constante et de la factoriser en deux termes.
Par exemple, N=24, la possibilité de le décomposer en deux termes est la suivante :
[1,24] , [2,12] , [3,8] , [ 4,6 ]
On utilise ces possibilités pour l'appliquer à la formule :
x - 2y = 1
x 2y = 24
-- ---- --------
x - 2a = 2
x 2a = 12
......
Convertir de cette manière Cela devient une équation linéaire à deux variables.
Enfin, nous sélectionnons simplement la solution entière positive.
function solequa(n) { var result = []; for(var a=1,b=n;a<=b;a++){ if(n % a == 0){ b = n / a; var x = (a + b) / 2; var y = (b - a) / 4; if(parseInt(x) == x && parseInt(y) == y && x >=0 && y >= 0){ result.push([x,y]); } } } return result; }
Ce qui précède est le contenu de la question amusante JavaScript : équation diophantienne. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !