Heim > Web-Frontend > js-Tutorial > Hauptteil

Lustige JavaScript-Fragen: Kleinster gemeinsamer Nenner

黄舟
Freigeben: 2017-02-04 15:31:53
Original
1538 Leute haben es durchsucht

Sie haben eine Liste, in der jedes Zahlenpaar den Zähler und Nenner eines Bruchs darstellt:

[ [numer_1, denom_1] , ... [numer_n, denom_n] ]
Nach dem Login kopieren

Alle Zahlen sind positive ganze Zahlen.

Sie müssen den kleinsten gemeinsamen Nenner D finden, den ursprünglichen Nenner durch D ersetzen und den Zähler so ändern, dass die von ihnen dargestellten Werte unverändert bleiben.

Zum Beispiel:

[ [1, 2], [1, 3], [1, 4] ] // => (6,12)(4,12)(3,12)
Nach dem Login kopieren

Hier ist der kleinste gemeinsame Nenner von 2, 3 und 4 12, also wird der Nenner in 12 geändert und der Zähler wird entsprechend geändert, um beizubehalten den gleichen Wert.

1/2 und 6/12 sind gleich groß, und 1/3 und 4/12 sind auch gleich groß.

Der Schlüssel zu dieser Frage besteht darin, den kleinsten gemeinsamen Nenner oder das kleinste gemeinsame Vielfache aller Nenner zu finden.

Wir benötigen also zunächst eine SCM-Methode, um das kleinste gemeinsame Vielfache zu finden, die ein Array als Parameter erhält.

Die Akkumulation beginnt beim größten Element des Arrays, um zu sehen, ob jedes Array-Element teilbar ist. Wenn ja, ist es das kleinste gemeinsame Vielfache

//smallest common multiple  
function scm(array){  
    var max = Math.max.apply(null,array);  
    signal:  
    while(true){  
        for(var i=0;i<array.length;i++){  
            if(max % array[i]){  
                max++;  
                continue signal;  
            }  
        }  
        return max;  
    }  
}
Nach dem Login kopieren

Natürlich ist diese Methode nicht effizient. Eine gute Möglichkeit, das kleinste gemeinsame Vielfache zu finden, ist die Verwendung des größten gemeinsamen Teilers.


Dann ist es einfach, das zweite Element aller Arrays in der Liste herauszunehmen, das das Nennerelement ist, ein neues Array zu bilden und es an den SCM zu übergeben Methode, um den kleinsten gemeinsamen Nenner zu erhalten.

Abschließend durchlaufen Sie die Liste und verketten die Zeichenfolgen.

function convertFrac(lst){  
    var array = [];  
    var str = "";  
    for(var i=0;i<lst.length;i++){  
        array.push(lst[i][1]);  
    }  
    var result = scm(array);  
    for(var i=0;i<lst.length;i++){  
        str += "(" + result / lst[i][1] * lst[i][0] + "," + result + ")";  
    }  
    return str;  
}
Nach dem Login kopieren

Das Obige ist der Inhalt von JavaScript-interessanten Fragen: Der kleinste gemeinsame Nenner Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!