关闭

js实现将一个正整数分解质因数

时间: 2018-09-25阅读: 5726标签: 算法

js 把一个正整数分解成若干个质数因子的过程称为分解质因数。  举个简单的例子: 

24分解质因数为2*2*2*3,简写成(2^3) * (3^1)。 


 在计算机方面,我们可以用一个哈希表来存储这个结果,在js中可以用如下的形式表示: { '2': 3, '3': 1 } ,那么如何分解质因数呢? 


 首先,你需要一个判断是否为质数的方法:

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 }


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/1112

给一个数字,输出人民币组合(JavaScript算法)

人民币由100元,50元,20元10元,5元1元,5毛,1毛面额组合。写一个方法随便传入一个数字参数,就输出人民币组合。

js背包问题算法_JavaScript 背包问题详解

打算好好学一下算法,先拿背包问题入手。最开始的01背包耗时最多,以前只会枚举(就是普通的for循环,暴力地一步步遍历下去),递归与二分,而动态规划所讲的状态表与状态迁移方程为我打开一扇大门。

JavaScript 实现归并排序

在本文中,我们学习 Merge Sort 背后的逻辑,并用 JavaScript 实现。最后,在空间和时间复杂度方面将归并排序与其他算法进行比较。

Js实现首字母大写

一小段字母文本可以手动输入进行字母大小写的改变,如果是一大段文本只好借助程序来实现,中字母大小写转换是基本功能。 返回一个字符串,确保字符串的每个单词首字母都大写,其余部分小写

JS数据结构与算法_集合&字典

集合set是一种包含不同元素的数据结构。集合中的元素成为成员。集合的两个最重要特性是:集合中的成员是无序的;集合中不允许相同成员存在,计算机中的集合与数学中集合的概念相同,有一些概念我们必须知晓:

JavaScript算法练习:乌托邦树

对于今天的算法,我们要写一个叫做 utopianTree 的函数,它只接受一个输入:一个整数 n。我们有一棵乌托邦树,每年要经历2个增长周期。在春季,高度增加一倍,在夏季,高度增加1(无论您要使用哪种测量系统)

程序员必须知道的10大基础实用算法及其讲解

程序员必须知道的10大算法:快速排序算法、堆排序算法、归并排序、二分查找算法、BFPRT(线性查找算法)、DFS(深度优先搜索)、BFS(广度优先搜索)、Dijkstra算法、动态规划算法、朴素贝叶斯分类算法

js实现生成任意长度的随机字符串

js生成任意长度的随机字符串,包含:数字,字母,特殊字符。实现原理:可以手动指定字符库及随机字符长度,利用Math.round()和Math.random()两个方法实现获取随机字符

程序员必知必会的10 大基础算法!

快速排序算法:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快

影响计算机算法世界的十位大师

算法和程序设计技术的先驱者。Oh,God!一些国外网站这样评价他。一般说来,不知道此人的程序员是不可原谅的。其经典著作《计算机程序设计艺术》更是被誉为算法中“真正”的圣经

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!