Maison > interface Web > js tutoriel > Question amusante JavaScript : équation diophantienne

Question amusante JavaScript : équation diophantienne

黄舟
Libérer: 2017-01-22 15:00:15
original
1662 Les gens l'ont consulté

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;  
}
Copier après la connexion

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

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal