Maison  >  Article  >  interface Web  >  Question amusante JavaScript : équation diophantienne

Question amusante JavaScript : équation diophantienne

黄舟
黄舟original
2017-01-22 15:00:151650parcourir

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) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn