把一个正整数分解成若干个质数因子的过程称为分解质因数。
举个简单的例子:
24分解质因数为2*2*2*3,简写成(2^3) * (3^1)。
在计算机方面,我们可以用一个哈希表来存储这个结果,在JS中可以用如下的形式表示:
{ '2': 3, '3': 1 }
立即学习“Java免费学习笔记(深入)”;
那么,如何分解质因数呢?
首先,你需要一个判断是否为质数的方法。
function isPrime(n){
for(var i=2;i<=Math.sqrt(n);i++){
if(n % i == 0){
return false;
}
}
return true;
}然后,利用短除法来分解。
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 // { '2': 3, '3': 1 }以上就是JavaScript趣题:分解质因数的内容,更多相关内容请关注PHP中文网(www.php.cn)!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号