• 技术文章 >web前端 >js教程

    JavaScript趣题:质数之差

    黄舟黄舟2017-02-04 15:09:44原创672
    质数不是有规律分布的,这从两个相邻质数的差就能得到体现。
    2和3相差1,3和5相差2,5和7的确也是相差2,但7和11却相差了4。
    乍看之下,你的确找不到规律,事实也是如此。
    在2到50之间,我们可以找到如下的相邻的差为2的质数对:
    3-5, 5-7, 11-13, 17-19, 29-31, 41-43
    很明显,满足上面条件的第一对质数是3-5。
    那么,更通用的情况,从m到n之间,差距为g的第一对相邻质数是多少?
    函数原型如下:
    gap(g , m , n)

    例子如下:

    gap(2, 5, 7) // --> [5, 7]  
    gap(4, 130, 200) // --> [163, 167]  
    gap(2, 5, 5) // --> null

    请注意,一定要是符合g差的第一对相邻质数。
    如果找不到,返回null。
    对于这一类和质数打交道的题目,咋们都无可避免地要引入一个判断质数的函数,有时我也不禁YY,要是能把这个函数纳入ECMA标准,那该多爽!
    但是考虑到通用性,这个isPrime方法确实应用场景窄了点,不适合绑定在Number.prototype上面,于是就只能一次次地做题目时扒下来粘贴了,汗^_^。
    这个题目本身没什么难度,一趟循环,遇到符合条件的质数对就return,没有符合条件的返回null,就这样了!

    Number.prototype.isPrime = function(){    
        var maxFactor = Math.floor(Math.sqrt(this));    
            for(var i=2;i<=maxFactor;i++){    
                if(this % i === 0){    
                    return false;    
                }    
            }    
        return true;    
    };    
      
    function gap(g, m, n) {  
        var firstPrime;  
        var secondPrime;  
        for(var i=m;i<=n;i++){  
            if(i.isPrime()){  
                firstPrime = secondPrime;  
                secondPrime = i;  
                if(secondPrime - firstPrime === g){  
                    return [firstPrime,secondPrime];  
                }   
            }  
        }  
        return null;  
    }

    以上就是 JavaScript趣题:质数之差的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    上一篇: JavaScript趣题:排列组合实战 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 手把手带你了解Angular中的依赖注入• 聊聊用pkg将Node.js项目打包为可执行文件的方法• Node实战:运用Cookie&Session进行登录验证• jQuery插件分享:Turn.js实现一个移动端电子书翻页效果• Angular学习之聊聊notification(自定义服务)
    1/1

    PHP中文网