Heim  >  Artikel  >  Web-Frontend  >  Lustige JavaScript-Frage: Diophantische Gleichung

Lustige JavaScript-Frage: Diophantische Gleichung

黄舟
黄舟Original
2017-01-22 15:00:151587Durchsuche

In der Mathematik ist die Diophantische Gleichung eine Polynomgleichung, meist mit zwei oder mehr Unbekannten, deren ganzzahlige Lösungen erforderlich sind.

Bestimmen Sie für die folgende diophantische Gleichung alle positiven ganzzahligen Lösungen.

x² - 4y² = n

x und y sind unbekannte Zahlen und n ist eine gegebene Konstante. Die Lösungsmenge von x, y wird mithilfe des folgenden verschachtelten Arrays angezeigt:

[[x1, y1], [x2, y2] ....]

Hier einige Beispiele:

sol_equa(90005) --> [[45003, 22501], [9003, 4499], [981, 467], [309, 37]]

sol_equa(90002) --> []

Sehen wir uns zunächst die linke Seite dieser Gleichung an, x² - 4y² transformiert werden soll (x - 2y) * (x + 2y), wenn Sie darüber nachdenken, haben Sie den ersten Schritt getan.

Da die Konstante N auf der rechten Seite der Gleichung eine sehr große Zahl sein kann, ist die Effizienz bei Verwendung der erschöpfenden Methode sehr gering.

Wir können versuchen, diese Konstante zu zerlegen und in zwei Terme zu faktorisieren.

Zum Beispiel N=24, die Möglichkeit, es in zwei Terme zu zerlegen, ist wie folgt:

[1,24] , [2,12] , [3,8] , [ 4,6 ]

Wir können diese auf die Formel anwenden:

x - 2y = 1

x + 2y = 24

---- - ---------

x - 2y = 2

x + 2y = 12

......

Auf diese Weise wird es in die Suche nach einer linearen Gleichung zweier Variablen umgewandelt.

Zuletzt wählen wir einfach die positive ganzzahlige Lösung aus.

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;  
}

Das Obige ist der Inhalt von JavaScript Fun Question: Diophantine Equation Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn