Maison > interface Web > js tutoriel > Question JavaScript amusante : le plus petit dénominateur commun

Question JavaScript amusante : le plus petit dénominateur commun

黄舟
Libérer: 2017-02-04 15:31:53
original
1576 Les gens l'ont consulté

Vous avez une liste dans laquelle chaque paire de nombres représente le numérateur et le dénominateur d'une fraction :

[ [numer_1, denom_1] , ... [numer_n, denom_n] ]
Copier après la connexion

Tous les nombres sont des entiers positifs.

Vous devez trouver le plus petit dénominateur commun D, ​​remplacer le dénominateur d'origine par D, et changer le numérateur pour que les valeurs qu'ils représentent restent inchangées.

Par exemple :

[ [1, 2], [1, 3], [1, 4] ] // => (6,12)(4,12)(3,12)
Copier après la connexion

Ici, le plus petit dénominateur commun de 2,3,4 est 12, donc le dénominateur est changé en 12, et le numérateur est modifié en conséquence pour maintenir le même valeur.

1/2 et 6/12 sont de la même taille, et 1/3 et 4/12 sont également de la même taille.

La clé de cette question est de trouver le plus petit dénominateur commun, ou le plus petit commun multiple de tous les dénominateurs.

Donc, nous avons d'abord besoin d'une méthode scm pour trouver le multiple le plus petit commun, qui reçoit un tableau en paramètre.

Il commence à s'accumuler à partir du plus grand élément du tableau pour voir si chaque élément du tableau peut être divisible. Si c'est le cas, il s'agit du multiple le plus petit commun

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

Bien sûr, cette méthode est. pas efficace. Un bon moyen de trouver le plus petit commun multiple consiste à utiliser le plus grand commun diviseur.


Ensuite, c'est facile à gérer. Retirez le deuxième élément de tous les tableaux de la liste, qui est l'élément dénominateur, formez un nouveau tableau et transmettez-le dans le scm. méthode pour obtenir le plus petit dénominateur commun.

Enfin, parcourez la liste et concaténez les chaînes.

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

Ce qui précède est le contenu des questions intéressantes en JavaScript : le plus petit dénominateur commun. 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