Heim  >  Artikel  >  Web-Frontend  >  Lustige JavaScript-Frage: Faktorisieren von Primfaktoren

Lustige JavaScript-Frage: Faktorisieren von Primfaktoren

黄舟
黄舟Original
2017-01-22 14:44:132726Durchsuche

Der Prozess der Zerlegung einer positiven ganzen Zahl in mehrere Primfaktoren wird als Zerlegung von Primfaktoren bezeichnet.

Ein einfaches Beispiel:

Der Primfaktor von 24 ist 2*2*2*3, was als (2^3) * (3^1) abgekürzt wird.

In Bezug auf Computer können wir eine Hash-Tabelle verwenden, um dieses Ergebnis zu speichern, das in JS in der folgenden Form ausgedrückt werden kann:

{ '2': 3, '3': 1 }

Wie zerlegt man also Primfaktoren?

Zuerst benötigen Sie eine Möglichkeit, festzustellen, ob es sich um eine Primzahl handelt.

function isPrime(n){  
    for(var i=2;i<=Math.sqrt(n);i++){  
        if(n % i == 0){  
            return false;  
        }  
    }  
    return true;  
}

Verwenden Sie dann die Kurzdivision zur Zerlegung.

function PrimeFactorizer(n){  
    //用来存储结果的hash  
    var hash = {};  
    while(n > 1){  
        //从最小的质数开始除  
        for(var i=2;i<=n;i++){  
            if(isPrime(i) && n % i == 0){  
                //如果hash中有这个质数,则存储的数目+1  
                if(hash[i]){  
                    hash[i] = hash[i] + 1;  
                }//否则把该质数作为key,value为1  
                else{  
                    hash[i] = 1;  
                }  
                //除掉这个最小的质数因子  
                n /= i;  
            }  
        }  
    }  
    //给实例上加个factor属性  
    this.factor = hash;  
    hash = null;  
}  
  
new PrimeFactorizer(24).factor // { &#39;2&#39;: 3, &#39;3&#39;: 1 }

Das Obige ist eine interessante JavaScript-Frage: Zerlegung von Primfaktoren. 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